2009-12-15 66 views
1

我們有一個網站,用戶可以上傳他們的簡歷。如果他們在任何瀏覽器中上傳它,它的工作正常。如果他們不上傳文件,在所有瀏覽器中都可以正常工作,但在谷歌瀏覽器中運行正常。我們有一個服務器端vb dll捕獲表單內容,上傳的任何文件都存儲在處理頁面隨後查詢的字典對象中。在chrome中我們的dll報告說有一個文件是在你沒有上傳任何東西的時候上傳的。再次,其他瀏覽器不這樣做,所以我不知道發生了什麼。有沒有人看到過這樣的行爲,如果是這樣,是否有修復?謝謝。谷歌瀏覽器和文件輸入問題

+0

您使用.NET或Java – 2009-12-15 14:37:49

+0

就是它的老同學ASP頁面用VB DLL捕獲上傳數據 – geoff 2009-12-15 14:59:39

+0

來測試這個去http://employment.topechelon.com/platinum/upload_start.html,只需點擊提交,而不上傳任何東西。在下一頁它寫出它收到的文件大小。在鉻中它爲我寫出了每個空文件61。在IE中我得到一個錯誤,因爲沒有上傳。任何想法爲什麼? – geoff 2009-12-15 18:52:48

回答

1

我在我的ASP項目中遇到了同樣的問題,其中HTTP標頭由像this這樣的VB函數處理。我寫了這個簡單的表格,我分析發送到Web服務器的HTTP標頭:

<form method="post" enctype="multipart/form-data" action=""> 
    <p><input type="file" name="file1" id="file1" /></p> 
    <p><input type="submit" name="send" id="send" value="Send" /></p> 
</form> 

如果輸入文件是空的,並且用戶點擊「發送」,所有的瀏覽器(除鉻)發送這個HTTP標頭:

-----------------------------11538186919912 
Content-Disposition: form-data; name="file1"; filename="" 
Content-Type: application/octet-stream 


-----------------------------11538186919912 
Content-Disposition: form-data; name="send" 

Send 
-----------------------------11538186919912-- 

谷歌Chrome,而是發送該HTTP標頭:

------WebKitFormBoundaryD4c5HZchlBudkIaQ 
Content-Disposition: form-data; name="file1"; filename="" 


------WebKitFormBoundaryD4c5HZchlBudkIaQ 
Content-Disposition: form-data; name="send" 

Send 
------WebKitFormBoundaryD4c5HZchlBudkIaQ-- 

谷歌Chrome,如果輸入的文件是空的,不發送 「內容類型」 字段。這是唯一的區別。可能與我的項目一樣,這種差異可能會導致DLL中的錯誤。

我希望我幫助過你,對不起我的英文不好!

0

Chrome(至少8.0.552.215)對文件的內容類型有問題。對我而言,如果該文件沒有擴展名。

參見:http://code.google.com/p/chromium/issues/detail?id=6800

注:我使用的是2.0.14支柱與FileUploadInterceptor(使用ServletFileUpload和JakataMultipartRequest)