我试图通过表单将文件上传到服务器:
<form action="send_valid.php" method="POST" enctype= "multipart/form-data">
<br>
<input type="file" name="pdf" id="pdf" accept="application/pdf"/>
<input type="hidden" name="MAX_FILE_SIZE" value="10000000"/>
<input type="submit" value="Wyślij">
</form>
我想让用户只发送最大尺寸为10Mb 的 pdf文件。
我上传的php配置是:
file_uploads = On
upload_tmp_dir = "E:\Xampp\tmp"
upload_max_filesize = 11M
max_file_uploads = 20
post_max_size = 12M
要检查文件大小,我使用:
if($_SERVER["REQUEST_METHOD"] == "POST"){
var_dump($_FILES);
if(extract($_FILES)){
if($pdf['size']>10000000){
echo "File size is too large!";
}
}
现在,当文件太大时,我想用 echo 向用户显示错误(现在)。如果它低于10Mb,它工作正常(即使上面的代码在我将大小更改为1Mb并且文件更大时它将显示 echo ),但对于10Mb及以上的文件,它会产生该错误:
Warning: POST Content-Length of 11450416 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
array(0) { }
我不知道为什么它显示超过 8Mb 因为在配置中我无法在任何地方找到8Mb。
哪里可以出问题?有没有办法捕获超出配置设置的上传,以便不向用户显示php服务器错误?
如果我想进行文件验证上面的方法并检查文件扩展名为for examle:
$ext = pathinfo($_POST['pdf'], PATHINFO_EXTENSION);
够了吗?任何有关文件验证的见解都会非常有用。
答案 0 :(得分:1)
可能这个
ini_set('post_max_size', '512M');
ini_set('upload_max_filesize', '512M');
将512改为任何你想要的。
答案 1 :(得分:0)
将此代码放在move_uploaded_file函数
之前 if($_FILES['pdf']['size']>10000000) {
exit("File size is too large!");
}
由于
答案 2 :(得分:0)
更新php配置文件中post_max_size
和upload_max_filesize
的值。
请注意,这些值以字节为单位。