我正在通过多次验证进行非常安全且紧凑的照片上传。一切都已建立。但是我坚持限制进入的体型。我正在使用自定义方法上传,图像通常在0.5-5 MB之间,我想强制5 MB作为限制。自定义方法用作带有一些参数的传递的加密JSON数组和带有图像b64字符串的JSON字段。
$size = (float)$_SERVER['CONTENT_LENGTH']/1024*1024;
if ($size > 5) {
die('file too big');
}
这段代码并不完全符合我的要求,因为它等待直到收到整个正文,这使得这段代码无用。有没有办法在上传POST主体之前或期间读取CONTENT_LENGTH标头,以便在必要时删除它?
答案 0 :(得分:1)
我认为即使在文件到达后端服务器之前解决此问题也更好。在代理级别,对于nginx,您可以使用client_max_body_size
答案 1 :(得分:0)
首先关于你的base64图片字符串:注意它大约37%(source)。
<?php
$head = array_change_key_case(get_headers("http://photojournal.jpl.nasa.gov/jpeg/PIA03239.jpg", TRUE));
$filesize = $head['content-length']/1024/1024;
if ($filesize > 30) {
print("File is bigger than 30 MB and file size is:\n" . $filesize . ' MB');
} else {
print("File is smaller than 30 MB and file size is:\n" . $filesize . ' MB');
}
?>
中的2014年意味着什么?
这里的PHP代码只检索标题而不下载:
awk
作为证明,我输入的图像链接大小约为35 MB,下载需要一些时间,但代码会立即返回大小。