2010-01-11 46 views
1

我有一個自定義的drupal模塊,它保存從uploadify jquery插件傳遞的上傳文件。一切似乎都很好,但一些圖像在其中出現灰色塊。請參閱:PHP圖像上傳灰線

http://5oup.net/sites/default/files/360/5ouppic.jpg

這是一個用戶提交的圖片,我無法重現自己的問題 - 我的理解是這是一個服務器端的問題,但我不知道如何來糾正這個問題。

這裏是我的模塊PHP其處理上載:

$tempFile = $_FILES['Filedata']['tmp_name']; 
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/'; 

$filename = $_FILES['Filedata']['name']; 
$filename = preg_replace("/[^A-Za-z0-9. ]/", '', $filename); 
$filename = str_replace(" ", '_', $filename); 

$targetFile = str_replace('//','/',$targetPath) . $filename;  

$name = $filename; 

mkdir(str_replace('//','/',$targetPath), 0755, true); 
move_uploaded_file($tempFile,$targetFile); 

是上傳「失速」不知何故?任何關於爲什麼只會在一些圖像上而不是其他人的想法?任何幫助非常感謝!

詹姆斯


編輯 - 能夠重現問題

我曾接觸過一個用戶,我能夠重現問題(即它上傳與每一次的灰色像素),使用該JPEG:

http://5oup.net/test/sucon.jpg

這JPEG上傳罰款:

http://5oup.net/test/hd.jpg

我只是無法弄清楚區別?!究竟會發生什麼?

感謝

+0

您是否有可能遇到上傳限制?例如腳本運行時? – Christoferw 2010-01-11 16:31:07

+0

也許,文件上傳大小限制爲800kb,你認爲這可能與一個小的圖像? – 2010-01-11 17:06:48

回答

0

我認爲$_SERVER['DOCUMENT_ROOT']將在年底給該網站的文件路徑,而不斜槓(「/」)。

請更換你的下面行以上代碼的第二行,

$targetPath = $_SERVER['DOCUMENT_ROOT'] .'/'. $_REQUEST['folder'] . '/'; 

希望這將有助於你....

1

當然,雖然它可能已經受損的傳輸錯誤這是JPG圖像的一小部分,如果這是一個單一的事件,我會先看用戶的一面。在上傳之前調整圖像大小時,出現問題的可能性更大。詢問他們是否在上傳之前立即調整圖像大小,以及調整大小的文件的樣子。讓他們通過電子郵件向你發送一切。

也許你想要上傳原始未損壞的文件,這裏的某個人可能可以通過查看它來了解更多。

我會首先檢查它是否可以在用戶的​​一面從完整的圖像(讓他們通過電子郵件發送給您),和從不同的圖像轉載。


編輯(在註釋中跑出空位)

非常,非常奇怪。從我對JPG格式瞭解甚少的情況來看,這可能是傳輸在僅有幾個字節內發生重大變化時的典型行爲:一些塊可能會受到影響並導致此問題。它可能是,我不能說 - 可能是硬盤問題(不太可能),某些防火牆過濾數據。 第一步肯定是獲取原始圖像並查看是否可以複製問題。我敢打賭,它不能。然後進行磁盤檢查,儘可能地替換,更改和測試(可能會移動臨時目錄/更新服務器軟件)。

如果沒有任何幫助,作爲最後的手段,您可能需要在另一臺服務器上設置該站點的鏡像副本,並在那裏自動上載以查看是否會再次發生。 Selenium IDE可能是一個幫助。

順便說一下,您可能想要後處理用戶的圖像,以保護他們的隱私。 EXIF數據揭示了很多,例如檢查thisthis

+0

感謝您的建議,我會與他們聯繫,看看我是否可以重現問題。 – 2010-01-11 12:15:38

+0

我已經與用戶取得了聯繫,但是我應該指出這發生在整個網站的不少圖片上,我會說5-10%的上傳圖片。 – 2010-01-11 13:41:26

+0

哦,那麼好吧,那麼服務器端可能會出現一些問題。完全沒有*任何涉及的後處理/調整大小?只有原始圖像的原始上傳? – 2010-01-11 15:59:32