3

我試圖上傳使用的技術文件到我的服務器描述on this blog最大上傳文件大小被忽略

一切順利,我能上傳文件就好了。唯一的障礙是,當我試圖上傳超過它在我的web.config是這樣定義的上傳限制文件....

<location path="Documents/Documents/Add"> 
    <system.web> 
     <httpRuntime maxRequestLength="25600"/> 
    </system.web> 
</location> 

的問題是,我沒有收到來自服務器的響應。事實上,在Visual Studio中進行調試時,該操作甚至沒有命中!

在提琴手進一步的調查表明,我得到一個...

504: ReadResponse() failed: The server did not return a response for this request. 

....但小提琴手正在運行時,我只得到這個在Chrome。如果fiddler沒有運行chrome,只會看到「Failed」沒有狀態代碼,並且$()。ajax表單調用的error()沒有命中。

另外this SO post有完全相同的問題。但是,我想知道當文件大小超出時我可以給用戶提供反饋,因爲當前「loading.gif」只是旋轉,因爲沒有提出錯誤響應。

回答

3

檢查這個SO關於客戶端檢查文件大小的問題,以便能夠在嘗試上傳太大的文件之前捕獲它。 Find size of file behind download link with jQuery

編輯

如果文件大小比在web.config文件中設置的較大,因此您可以如果你要處理它的服務器端做的幾件事情,服務器會拋出異常。

1)您可以增加最大文件大小,然後您的上傳代碼可以驗證較小的尺寸,如果它太大則返回失敗。當然,如果他們嘗試的東西比新的尺寸更大,它仍然會失敗。

2)抓住global.asax文件中的錯誤,並用它做一些事情。設置一個響應頭,返回false或其他。請檢查Catching "Maximum request length exceeded"以開始使用此選項。

3)使用之前放置的JQuery選項處理客戶端,或使用Flash檢查大小。

基本上等待服務器告訴你文件太大通常太晚了。該文件必須一直走到那裏,才能告訴你oops太大了。這會在您的服務器上產生較大的影響。如果可能的話,找到一種方法在客戶端上檢查它通常會更好。

+1

感謝您的回答,但我不確定這是否會有所幫助,因爲它似乎正在獲取服務器上已有文件的contentLength。我的情況是使用進行文件上傳。如果我誤解了你的答案,請告訴我。 – ETFairfax

+0

有幾種方法可以做到這一點,但如果您計劃從服務器端獲得簡單的解決方案,您不會喜歡它們。首先,如果您使用web.config來管理最大文件大小,那麼您的上傳頁面在超過該數量時不會被擊中。我會修改我的答案以發佈可能的解決方案。 – benjamin