2012-10-03 44 views
1

我試圖將圖像上傳到php腳本。我有一個非永久性的bug,導致上傳的一些圖像的文件大小爲0.我試圖將_FILES數組打印到我的日誌文件中,並顯示錯誤代碼爲0,這應該是好的。文件上傳結果文件大小爲0,錯誤代碼爲0

這些行:

foreach($_FILES['image_file'] as $key => $val){ 
     error_log(date('j/n/o H:i:s')." ". $key ." => ".$val. "\n", 3,$log_path); 
    } 

給我這些日誌文件:

  1. 2012年3月10日十二時12分54秒的名字=> 59175248636.jpg
  2. 3/10/2012 12:12:54 type => image/jpeg
  3. 2012/3/10 12:12:54 tmp_name => C:\ WINDOWS \ Temp \ php411F.tmp
  4. 2012/3/10 12:12 :54錯誤=> 0
  5. 2012年3月10日12點12分54秒的大小=> 0

由於可以從日誌文件中讀取,這個腳本Windows機器,其中我有限的知識上運行。我已經將post_max_size更改爲10M,並且php.ini中的upload_max_size更改爲10M。

我對這個問題大吃一驚。當我使用自己的設備進行測試時,它可以正常工作,但由於某種原因,當我的測試人員嘗試使用它時,它會失敗。

+0

的圖像存儲在文件系統或不?那麼, –

+0

。這實際上是一個很好的問題。由於我將這部署在我無法訪問的服務器上,我唯一的測試方法是使用move_uploaded_file。此方法返回true,並將文件保存到(我想要的目錄)與filsize 0. – MsJorge

+0

難道你不需要使用類似temp_size的東西來獲取文件大小? – Chris

回答

0

編輯 - 試試這個:

我想你可能需要更改$ _FILES [ '文件']到$ _FILES [ 'IMAGE_FILE']您的設置工作。我有如下離開它爲了便於閱讀...

if ($_FILES['file']['error'] === UPLOAD_ERR_OK && $_FILES['file']['size'] > 0){ 

    ... upload was successful ... 

}elseif($_FILES['file']['error'] === UPLOAD_ERR_OK && $_FILES['file']['size'] == 0){ 

    die("Upload failed, random upload issue... please try again); 
    // change this error to something more useful... (leave this error in for testing) 

}else { 

    die("Upload failed with error code " . $_FILES['file']['error']); 

} 

這不能解決隨機文件大小問題,但它可以讓你的代碼/進程繼續。把它作爲一個上傳失敗,並告訴用戶再次嘗試......

使用的代碼從這個stackoverflow post發表Marc B

+0

嗨克里斯。是的,我看過那篇文章,但正如您在我發佈的日誌中所看到的,錯誤代碼爲0,根據http://php.net/manual/en/features.file-upload.errors .php表示上傳成功。 – MsJorge

+0

啊,也許有讀取上傳文件大小的方法 – Chris

+0

文件大小是否超過最大文件大小?我認爲即使已成功上傳,也會將文件大小設置爲零。 - 你可以通過嘗試超過10MB的文件來測試這可能是 – Chris

相關問題