【发布时间】:2019-08-03 08:48:55
【问题描述】:
我的 Imagick 库似乎在大多数情况下都能正常工作,但当我尝试上传某些 JPEG 文件时会抛出以下错误消息:
Fatal error: Uncaught ImagickException: Invalid filename provided in D:\xampp\htdocs\socialnetwork\dashboard.php:68 Stack trace: #0 D:\xampp\htdocs\socialnetwork\dashboard.php(68): Imagick->__construct('') #1 {main} thrown in D:\xampp\htdocs\socialnetwork\dashboard.php on line 68
我找不到似乎会影响此结果的共同因素。它可以发生在任何位深度,但似乎确实存在具有更高分辨率文件的模式。重命名文件也没有区别。我完全不知所措!
作为指标,以下是一些示例文件名:
// Working
'10899370_774171245990712_1020727574_n.jpg'
'28062008013.jpg'
'800px-Flag_of_the_United_Kingdom.svg.png'
// Not working
'DSC00806.jpg'
'daf.jpg'
'10899370_774171245990712_1020727574_q.jpg'
我的PHP源码如下:
<?php if (isset($_FILES["image_upload"]["name"])) {
$imagick = new Imagick($_FILES["image_upload"]["tmp_name"]);
$imagick->resizeImage('400', '0', IMagick::FILTER_POINT, '1');
$hash = md5( rand(0,1000) );
$imagick->setImageFormat ("jpeg");
file_put_contents ('photos/'.$hash.'.jpg', $imagick);
header('Location:dashboard.php');
} ?>
<form action="" method="post" enctype="multipart/form-data">
<label>Upload image</label><input type="file" name="image_upload" id="image_upload">
<input type="submit">
</form>
【问题讨论】:
-
您也可以发布其中一个文件名。
-
这似乎并没有太大区别,因此我将其省略了,但我会添加它。
-
按照您创建哈希的方式,您很快就会遇到冲突。你为什么不散列图像本身,或者创建一个 GUID?
-
哈希可能不会因为这个原因而被削减,但这当然不是这里的问题。即使“照片/”为空,我仍然会收到错误消息。
标签: php imagemagick imagick