2013-06-02 100 views
0

嘗試使用imagick處理上傳的圖像時出現以下錯誤。imagick錯誤:'無法打開圖像'圖像上傳

Fatal error: Uncaught exception 'ImagickException' with message 'unable to open image `9eK59iu.jpg': No such file or directory @ error/blob.c/OpenBlob/2644' in D:\PATH\upload.php on line 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

我也試圖與imagick打開圖像,move_uploaded_file後的圖像,像這樣:

<?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

閱讀file upload docs通過PHP指定服務器端的臨時文件名上載的文件存儲在01 $ _FILES數組中的。您正嘗試使用客戶端用戶提供的['name'],其中不是存在於您的服務器上的任何位置。

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

您還簡單地假設上傳已成功。這不是一件好事。永遠都不會假設成功處理遠程資源(web apis,文件上傳,數據庫操作等)。經常檢查錯誤:

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

我改變了代碼就像你說的,現在我得到這個錯誤: >致命錯誤:未捕獲的異常「ImagickException」有消息「無法打開圖像'd:/ PATH /內容/ 1370182981':Permission denied @ error/blob.c/OpenBlob/2644'in D:\ PATH \ upload.php on line 84 – Rotareti

+0

問題是我只在這裏放了一個路徑:'writeImage($ new_folder_name);'我忘了文件名。 – Rotareti