当我用PHP上传一个imagen时,我没有得到任何错误,并且服务器上的图像是0字节。考虑事项:
- phpinfo()中的File_uploads处于打开状态
- phpinfo()中Upload_max_filesize为8M
- Upload_tmp_dir已设置,具有777个权限
- 如果我运行file_exists($_FILES['userfile']['tmp_name']),它将返回真的
- 如果我运行getimagesize($_FILES['userfile']['tmp_name']),我会得到一个Read错误通知。图像有效,可以使用系统图像打开查看器
我正在使用一个非常简单的上传脚本进行测试:
HTML:
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="512000" />
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
PHP:
<?php
//$uploaddir = '/var/www/html/upload';
$uploaddir = '';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo "<p>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.'n";
} else {
echo "Upload failed";
}
echo "</p>";
echo '<pre>';
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>
当我提交文件时,我没有收到任何错误,并且图像是在目标文件夹中创建的,具有正确的名称和扩展名,但正如标题所说,它是0字节(当然,它不能被拒绝)。
谢谢你抽出时间。
编辑Sajad Karuthedath让我看到$_FILE['FILE']['size']值为0!!导致文件上传不正确的问题是什么?
编辑2上传txt,pdf,tar文件工作正常。。问题只出在图像类型的文件上!
试试这个简单的上传脚本,
在保存到服务器之前,您应该检查错误
if ( 0 < $_FILES['file']['error'] ) {
echo 'Error: ' . $_FILES['file']['error'] . '<br>';
}
else {
move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/'.$_FILES['file']['name']);
}
注意:更改phpinfo()后,不要忘记重新启动服务器或examplep
注意:也更改php 中的post_max_size = 25M
为了跟踪问题,只需添加一个"退出"直接在";移动已部署文件"命令,如果文件被正确上传;move_upload";这是错误的。在我的情况下,我在上传后打开上传的文件,并使用覆盖(w+)选项来检查文件的锁定状态。它正在制作一个空文件。