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


File uploading only working with some images (class.upload.php)

我已经尝试了使用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";

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

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

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

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

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

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