想象错误:'无法打开图片'图片上传

时间:2013-06-02 02:32:36

标签: image-uploading imagick

尝试使用imagick处理上传的图像时出现以下错误。

  

致命错误:未捕获异常'ImagickException',消息'无法打开图像`9eK59iu.jpg':D:\ PATH \ upload.php中没有此类文件或目录@ error / blob.c / OpenBlob / 2644'第77行

代码如下所示:

<?php

    $new_folder_name = "D:/PATH/content";       
    mkdir("$new_folder_name",0700);

    $tmp_img = $_FILES["upload_file"]["tmp_name"];

    $img = new Imagick($tmp_img);
    $img->thumbnailImage(100 , 100 , TRUE);
    $img->writeImage($new_folder_name);

?>

没有想象,图像上传工作正常。

只有想象力不会打开给予$ _FILES的图像

我还尝试在move_uploaded_file之后使用imagick打开图像,如下所示:

<?php

    $extension = pathinfo($upload_file_name, PATHINFO_EXTENSION);
    $new_upload_file_name = rand(00000, 99999).".".$extension;

    $new_folder_name = "D:/PATH/content".time();        
    mkdir("$new_folder_name",0700);

    $path_to_file = $new_folder_name."/".$new_upload_file_name;

    move_uploaded_file($_FILES["upload_file"]["tmp_name"],$path_to_file);

    $img = new Imagick($path_to_file);
    $img->thumbnailImage(100 , 100 , TRUE);
    $img->writeImage($new_folder_name);

?>

既不起作用..: - (

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

阅读file upload docs。 PHP分配的服务器端临时文件名,用于将上传的文件存储在$ _FILES数组的['tmp_name']中。您尝试使用客户端用户提供的['name']不会存在于服务器的任何位置。

$tmp_img = $_FILES["upload_file"]["tmp_name"];
                                   ^^^^

您也只是假设上传成功。这不是一件好事。永远不要假设成功处理远程资源(网络api,文件上传,数据库操作等......)。总是检查错误:

if ($_FILES['upload_file']['error'] !== UPLOAD_ERR_OK) {
  die("Upload failed with error code " . $_FILES['upload_file']['error']);
}