1

アップロードした画像を imagick で処理しようとすると、次のエラーが発生します。

致命的なエラー: キャッチされない例外 'ImagickException' とメッセージ '画像 `9eK59iu.jpg' を開けません: No such file or directory @ error/blob.c/OpenBlob/2644' in D:\PATH\upload.php 行 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);

?>

imagick がなければ、画像のアップロードは問題なく機能します。

imagick のみが $_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);

?>

どちらも機能しません.. :-(

なにか提案を?

4

1 に答える 1

1

ファイル アップロードのドキュメントをお読みください。アップロードされたファイルを['tmp_name']$_FILES 配列に格納するために PHP によって割り当てられるサーバー側の一時ファイル名。サーバーのどこにも存在しない['name']クライアント側のユーザー提供のを使用しようとしています。

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

また、アップロードが成功したと仮定しているだけです。それは良いことではありません。リモート リソース (Web API、ファイルのアップロード、データベース操作など) の処理が成功するとは決して思い込まないでください。常にエラーをチェックしてください:

if ($_FILES['upload_file']['error'] !== UPLOAD_ERR_OK) {
  die("Upload failed with error code " . $_FILES['upload_file']['error']);
}
于 2013-06-02T02:34:50.420 に答える