PHP:在将文件下载到服务器时检查文件大小

用户将使用
file_put_contents()</ p>提供服务器从中获取文件的URL

我想将文件大小限制为1MB </ p>

我可以在下载之前使用他的解决方案。 但是,并非每个HEAD请求都会在下载之前返回文件的大小。</ p>

如果文件大小超过一定数量的文件,是否有办法停止将文件下载到服务器 叮咬?</ p>
</ div>

展开原文

原文

The user is to provide a URL from which the server will fetch a file using file_put_contents()

I would like to restrict the file size to 1MB

I am able to check the file size of some files prior to downloading using THIS solution. However not every HEAD request returns the size of a file prior to its download.

Is there a way to stop the download of a file to a server if the file size exceeds a certain number of bites?

php
dousi5358
dousi5358 非常感谢@sergiu诀窍
大约 6 年之前 回复
duanfeng7756
duanfeng7756 那你的意思是file_get_contents。不要使用它。而是使用fopen->fread(有限长度,xKB,小于1MB)->fclose如果feof或总数据读取>=1MB。如果你得到feof然后它小于1MB你可以将它保存到磁盘或做你需要做的任何事情。我正在谈论的所有功能都记录在手册中(例如php.net/manual/ro/function.fread.php)
大约 6 年之前 回复
doukuai3822
doukuai3822 读-服务器需要读取URL的结果文件。
大约 6 年之前 回复
dongshushi5579
dongshushi5579 我不认为我们彼此了解。“使用file_put_contents获取文件”是什么意思?提取通常意味着“读取”和file_put_contents写入。你能否澄清一下这个问题?
大约 6 年之前 回复
donglian2106
donglian2106 那么它会受到output_buffering的限制吗?如果是这样,我如何设置下载限制,使其成为output_buffering值的倍数?
大约 6 年之前 回复
drtoaamk20278
drtoaamk20278 使用经典的方式读取文件(fopen...),它可以通过HTTP工作,如果EOF不在1MB数据之前就会“中止”。
大约 6 年之前 回复

2个回答



按照Sergiu Paraschiv的建议回答评论:</ p>

  function get_file_Name_from_URL($ url,  $ SizeLimit){
$ _1MB = 8000000;
$ Limit = $ _1MB * $ SizeLimit;
$ file = fopen(“$ url”,“r”);
fread($ file,“$ Limit”) ;

//检查文件结尾
if(feof($ file)){

返回true;
}否则{

//文件太大\ n

返回false;
}

nclclose($ file);
}
</ code> </ pre>
</ div>

展开原文

原文

Answer as suggested by Sergiu Paraschiv comments:

function get_file_Name_from_URL( $url, $SizeLimit ) {
$_1MB = 8000000;
$Limit = $_1MB *  $SizeLimit;
$file = fopen("$url","r");
fread($file,"$Limit");

// check for end of file
if (feof($file)){




return true;
} else{

//File is too big


return false;
}

fclose($file);
}



我不确定您是否可以在上传过程中检查转移。</ p>

相反,您可以查看 下载后的文件大小,如果大于1MB,请将其删除。</ p>
</ div>

展开原文

原文

I'm not sure if you can check transfer during upload.

Instead you can check the filesize after you download it and if it is more than 1MB, delete it.

doufen1933
doufen1933 可能会浪费宝贵的带宽。
大约 6 年之前 回复
douzhicui2209
douzhicui2209 如果您正在使用Linux,可能会发生任何错误,但我知道这不是最佳解决方案。 我也知道大文件。 您可以使用在下载之前检查文件大小的脚本(它应该覆盖90%的情况),如果没有返回值,请使用上面给出的选项。
大约 6 年之前 回复
duanfei9278
duanfei9278 该解决方案的问题在于存在攻击的可能性。 如果提交大文件,可能会使用大量资源。
大约 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐