2012-02-20 195 views
1

我爲客戶製作了CMS。他可以做的一件事就是上傳一個PDF文件。我們已經徹底地測試過了,並沒有遇到任何錯誤。但是,他似乎無法上傳任何東西。該文件從未上傳。他的瀏覽器只是繼續加載。無法上傳文件

我的客戶使用Firefox(不知道哪個版本,但我認爲沒關係),他試圖上傳的PDF文件大約是5MB,沒有什麼極端。

上傳文件時瀏覽器沒有完成請求的原因是什麼?我不認爲這些文件是腐敗的。

我不認爲問題出在我的腳本...但仍值得發帖:

if(!empty($_FILES['pdf'])) { 
    $path = '../pdf/'; 
    $filename = $_FILES['pdf']['name']; 

    if(!empty($assoc['pdf'])) { 
     $oldfile = $path.$assoc['pdf']; 

     if(file_exists($oldfile)) { 
      unset($oldfile); 
     } 
    } 

    $success = move_uploaded_file($_FILES['pdf']['tmp_name'], $path.$filename); 
} 

編輯:他送我,他要上傳的PDF。花了大約10秒鐘上傳......我給他提供了一個鏈接來做一個速度測試,哈哈。

+0

HTML表單是什麼樣的?您是否發佈到iframe,到後續頁面,PHP_SELF或通過AJAX?根據這種情況的發生,其他進程可能會中斷上傳。例如,如果您正在上傳到iframe並且目標框架在上傳過程中被重定向或重新加載,則Firefox將無限地繼續嘗試發佈,但從未成功。 – 2012-02-20 15:08:01

+0

他/她可能只是沒有時間去嘗試它,並通過彌補「這不是工作」的理由來支持他的時間。似乎是我們最常見的錯誤! :) – Dave 2012-02-20 15:14:48

+0

您是否在代碼中添加了一些打印件以確保文件真正上傳? '$ success'設置爲true還是瀏覽器從不響應? – Robert 2012-02-20 15:20:21

回答

1

你可以有兩個問題,我可以看到,可能不是你確切的問題,但可能導致你的答案。

#1。 POST_MAX_SIZE或UPLOAD_MAX_FILESIZE不夠大

有兩種配置,php程序員經常忘記這可能是你最明顯的問題。你的測試已經完成,但他們已經完成大文件?

使用一個htaccess或一個php.ini(取決於您的服務器配置)可以重寫PHP設置

  1. 的upload_max_filesize
  2. 的post_max_size

,並給他們,例如20M:

/*.HTACCESS*/ 
php_value upload_max_filesize 20M 
php_value post_max_size 20M 

/*PHP.INI*/ 
upload_max_filesize = 20M 
post_max_size = 20M 

您不能使用ini_set(),因爲這些變量es在PHP開始處理之前使用,因此在上下文中將變得無用。

#2。 ENCTYPE沒有的multipart/form-data的

雖然很unprobable,你可能已經忘了把表單上的ENCTYPE屬性爲「multipart/form-data的」,因此,沒有東西都發送到服務器。但我懷疑這是你的問題,因爲你說你對它進行了廣泛的測試。

,但有時候,我們四處移動的東西,忘記測試(它發生在我身上),我確信某件事之前工作過,現在是沒有,所以檢查出來只是爲了確保:)

好運氣

+0

謝謝你的回答,但我必須讓你失望。我設法找出upload_max_filesize有點低(8mb),但仍然足以上傳他試圖上傳的文件(6mb)。此外,如果這是一個服務器問題,我無法上傳相同的文件,雖然我說我設法上傳文件。另外,enctype是正確的。 – 2012-02-20 15:47:46

+0

你是否也檢查了post_max_size,它們都被鏈接... – 2012-02-20 15:55:05

+0

post_max_size很好。 – 2012-02-20 15:57:02

0

讓客戶端嘗試在不同於Firefox的瀏覽器中上傳文件。如果它適用於其他瀏覽器,請嘗試刪除(或重命名/移動,用於測試目的)客戶端Firefox profile folder中的文件MimeTypes.rdf

如果之後PDF上傳工作,您遇到了2007年首次報告的a Firefox bugbasically the same here,2006年報告)。簡而言之,任何用戶從中下載文件的網站都有可能破壞MimeTypes.rdf文件,涉及惡意或意外/不知情的下載文件的擴展。

事情可以做:

  1. Vote for the Firefox bug!
  2. 快速修復得到它正在爲客戶端現在:讓用戶(S)刪除其MimeTypes.rdf文件。 Firefox將在下一次開始時創建一個新的「新鮮」,但是這將清除用戶隨着時間的推移創建的所有MIME類型/應用程序關聯。此外,這隻會有用,直到用戶從其他某個網站下載下一個PDF文件再次破壞MimeTypes.rdf文件。
  3. 使用「用戶代理」標題確定文件是否從Firefox上傳。如果是這樣,並且MIME類型與您希望接受的任何內容不匹配,請仔細檢查文件名的擴展名,並且如果擴展名符合您接受的文件類型(您的案例中的「.pdf」),則接受該文件。