【发布时间】:2021-02-04 20:35:38
【问题描述】:
我有一个照片上传区。它工作没有任何问题。但后来我开始注意到它没有上传一些图片。在其他情况下,颜色和像素开始出现错误。旧文件没有问题。只有一些新的上传。 这个问题开始自行发生,而我的代码没有任何更改。 我正在使用cropper js 裁剪照片。 不是每个上传都是这样的。我把有趣的例子留在这里。 有时它根本不加载图像。 正常工作的东西怎么会自己失败? 对不起我的英语不好。提前感谢所有帮助过的人
$file = $_FILES['avatar'];
$fileName = $_FILES['avatar']['name'];
$fileTmpName = $_FILES['avatar']['tmp_name'];
$fileError = $_FILES['avatar']['error'];
$fileSize = $_FILES['avatar']['size'];
$fileType = $_FILES['avatar']['type'];
$fileExt = explode('.', $fileName);
$fileActualExt = strtolower(end($fileExt));
$allowed = array('jpg', 'jpeg', 'png');
if(in_array($fileActualExt, $allowed)){
if($fileError === 0){
if($fileSize < 100000000){
$fileNameNew = time().md5(time().$o_id.$fileName)."_".sha1($user_id.rand(10,99)).$l_category.".".$fileActualExt;
$fileDestination = "photos/".$fileNameNew;
function compressImage($source, $destination, $quality) {
$info = getimagesize($source);
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source);
elseif ($info['mime'] == 'image/gif')
$image = imagecreatefromgif($source);
elseif ($info['mime'] == 'image/png')
$image = imagecreatefrompng($source);
imagejpeg($image, $destination, $quality);
return true;
}
compressImage($fileTmpName, $fileDestination, 90);
}
【问题讨论】:
-
您正在使用 Javascript 工具裁剪图像,并使用 GD 压缩它们。如果省略这些操作,您会发现这些问题吗?
-
没有。也许 gd 库错误。我发现由于先前加载的文件损坏,可能会出现问题。但我有 30000 个文件:(
-
现在即使我将照片文件上传到不同的cdn服务器而不裁剪它,照片也会损坏:(我在上面的答案中说不,但是当我再次测试时,我看到照片上传到我的服务器直接损坏了。很有趣..这是怎么回事?