尝试上传.JPG文件时出现以下错误。
Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in H:\Programs\webserver\root\media\images\upload.php on line 43
以下是upload.php文件的一部分:
if(isset($_FILES['files']))
{
$cat = $_POST['cat'];
$title = $_POST['title'];
$album = $_POST['album'];
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name)
{
// get dimensions of uploaded images
echo $temp = $_FILES['files']['tmp_name'][$key]; //location of file
echo $type = $_FILES['files']['type'][$key]; //image type
echo $size = $_FILES['files']['size'][$key]; // image size
>> line 43 >>**echo $size2 = getimagesize($temp); //function to get info of file and put into array**
echo $width = $size2[0]; // first part of the array is the image width
echo $height = $size2[1]; // second part fo the array is the image width
if($type == 'image/jpeg')
{
$filetype = '.jpeg';
}else{
$filetype = str_replace('image/','',$type);
}
$random_name = rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999);
$path = 'img/'.$random_name . $_FILES['files']['name'][$key];
$thumb_path = 'img/thumb_/'.$random_name .$_FILES['files']['name'][$key];
我有另一个上传的.jpg图片文件,用于测试哪些上传效果不错,同时.png和.gif文件也可以正常上传。
只是补充一点,我尝试了几个相似大小的图像文件并收到了同样的错误。 第一个Image文件是4.2MB,第二个是5MB。为什么文件大小会阻止它上传?
当使用$ _FILES ['files'] ['error'] [$ key]; - 它返回1.
这是我在使用print_r时得到的:
Array ( [files] => Array ( [name] => Array ( [0] => DSCN0354.JPG ) [type] => Array ( [0] => ) [tmp_name] => Array ( [0] => ) [error] => Array ( [0] => 1 ) [size] => Array ( [0] => 0 ) ) )
答案 0 :(得分:2)
如果添加一些错误处理,您可以使用error code轻松查看问题所在:
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name)
{
if ($_FILES['files']['error'][$key] == UPLOAD_ERR_OK)
{
// good
}
else
{
// not good, see messages on http://www.php.net/manual/en/features.file-upload.errors.php
}
}
答案 1 :(得分:2)
让我们看看知识:
这些知识让我相信问题图像对于php.ini设置中当前允许的upload_max_filesize
来说太大了:
$ -> php -i | fgrep -i size
upload_max_filesize => 2M => 2M
尝试将尺寸增加到6M或8M,您的更大图像应该可以正常工作。
答案 2 :(得分:1)
你必须在访问tmp_name之前检查$_FILES['error'][$key] - 文件没有上传,因为它太大或其他原因(你会发现'错误'字段的值)
答案 3 :(得分:1)
Also when using $_FILES['files']['error'][$key]; - it returns 1.
错误1:上传的文件超过 php.ini中的upload_max_filesize
指令。
(见http://www.php.net/manual/en/features.file-upload.errors.php)
答案 4 :(得分:0)
错误消息指出提供的文件名为空。
您正在使用:
$size2 = getimagesize($temp);
你从哪里得到$ temp?它是foreach(),如果是,你应该使用$ tmp_name。