文件上传仅适用于某些图像(class.upload.php)

时间:2012-06-07 22:05:36

标签: php image-uploading

我尝试过使用PHP上传图像的原生方式,但我的朋友建议我使用class.upload.php库,它仍然具有与以前相同的结果。我只能上传某些图像而没有那些小图标,这意味着浏览器无法找到图像,但奇怪的是,当我将“无效”图像下载到我的电脑时,它们很好。大约50%的图像实际上可以正常工作,但其余图像只显示它们应该具有的适当大小但没有图像。这是我的代码(我的html表单有一个名为filename的文件输入类型:

$handle = new upload($_FILES['filename']);

if ($handle->uploaded)   
{
   if ($file_src_size < 20000)
   {
        $handle->file_new_name_body = "test";  
        $handle->image_convert = 'jpg';
        $handle->process('/');  

        echo "<img src = \"test.jpg\" />";
    }
    else echo "Files must be 20 kb or under";
}
else echo "Upload failed, please try again";

2 个答案:

答案 0 :(得分:1)

您可以下载图像并在本地重新显示这一事实表明问题不在于上传脚本。另一个问题可能是图像没有正确保存以供Web查看。例如,仅仅因为文件以.jpg结尾并且可以在本地查看并不意味着它可以被浏览器识别。很多浏览器都无法查看CMYK jpeg。

答案 1 :(得分:0)

您需要调试代码,因为出现问题,只有有权访问您计算机的人才能告诉您原因。

1)您正在使用的库具有错误检测代码

if ($handle->processed) {
       echo 'image resized';
       $handle->clean();
} else {
   echo 'error : ' . $handle->error;
}

2)您应该能够查看已处理的图像数据,并找出浏览器无法将其解析为图像的原因。如果您可以为无效图像提供URL,我可以告诉您它有什么问题。

3)通过调用“process('/');”将文件写入根目录不好。您应该创建一个目录来保存来自其他人的文件,以避免在某些人上传名为“index.php”的图像时出现潜在问题。