我正在尝试使用PHP上传文件!我尝试上传PNG,JPG,PDF,TXT文件,这些上传仅在文件大小约为20kb时才有效。
当我尝试上传大小约为150KB的文件时,它会打印$_FILE error = 3
,文件名可以说'1234.png',其中tmp_name为空,图像本身也是如此!这是我的代码
ini_set('display_errors',1);
error_reporting(-1);
$imageTmp = addslashes($_FILES['image']['tmp_name']);
//$imageTmp = $_FILES['image']['tmp_name'];
$imageOldName = addslashes($_FILES['image']['name']);
$imageData = file_get_contents($imageTmp);
//$imageData = base64_encode($imageTmp);
echo 'image temp name: '. $imageTmp .' ';
echo 'error: '. $_FILES['image']['error']. ' ';
echo 'image name: '. $imageOldName. ' ';
echo 'image data: '. $imageData. ' ';
echo 'image type:'. $_FILES['image']['type'];
echo "<pre>";
echo "POST:";
print_r($_POST);
echo "FILES:";
print_r($_FILES);
echo "</pre>";
$inipath = php_ini_loaded_file();
if ($inipath) {
echo 'Loaded php.ini: ' . $inipath;
} else {
echo 'A php.ini file is not loaded';
}
我尝试了多种解决方案,例如更改post_max_size = 200M
和upload_max_filesize = 200M
的值而非32M
以下是尝试上传txt文件4KB的结果:
image temp name: /Applications/MAMP/tmp/php/phpOc7d6a error: 0
image Name: test.txt image data: hello image type:text/plain
POST:Array
(
[submit] => Record Test
)
FILES:Array
(
[image] => Array
(
[name] => test.txt
[type] => text/plain
[tmp_name] => /Applications/MAMP/tmp/php/phpOc7d6a
[error] => 0
[size] => 405
)
)
Loaded php.ini: /Applications/MAMP/bin/php/php5.6.10/conf/php.ini
上传PNG文件127KB的结果:
警告:file_get_contents():第10行路径/ test1.php中的文件名不能为空图像临时名称:错误:3图像名称:IMG_8807.JPG图像数据:图像类型:
POST:Array
(
)
FILES:Array
(
[image] => Array
(
[name] => IMG_8807.JPG
[type] =>
[tmp_name] =>
[error] => 3
[size] => 0
)
)
Loaded php.ini: /Applications/MAMP/bin/php/php5.6.10/conf/php.ini
BTW,上传失败后,服务器崩溃并显示502网关,我必须重新启动Apache!
答案 0 :(得分:0)
正如php文档所说:
UPLOAD_ERR_PARTIAL is given when the mime boundary is not found after the file data.
A possibly cause for this is that the upload was cancelled by the user (pressed ESC, etc).
也许:
权限错误
服务器上的可用空间不足。
从iOS上传。
由于浏览器限制,在上传文件夹时可能会发生此错误。在Mac OS X上发生。
这些是你可以尝试的一些东西。希望这会有所帮助。