2010-11-23 101 views
3

我有一個FileUpload控件,用戶可以上傳圖片。我可以確保上傳圖像的文件大小低於配置的maxRequestLength在上傳發生之前,並通過這樣做防止文件大小過大時引發異常?在上傳之前確保上傳文件的文件大小低於maxRequestLength?

我最初嘗試查看控件的PostedFile的ContentLength是無濟於事的,因爲該文件已經提交。

我對增加maxRequestLength沒有興趣。

回答

1

從可用性的角度來看,一條簡單的消息告訴人們不要走很長的路,以防止問題。你可以試試這個(YMMV):它只是提示瀏覽器,並且依賴於支持語法的瀏覽器。隱藏字段顯然需要立即在您的文件輸入之前(或在asp.net中,您的文件上傳控件,檢查瀏覽器中的標記以確保)。

<input type="hidden" name="MAX_FILE_SIZE" value="500" /> 
<input type="file" /> 

其中值是以Kb爲單位 - 所以上面將限制爲半兆字節。一些瀏覽器不會支持這個,所以你仍然需要在服務器端檢查它,或者接受一些奇怪/古老/不同瀏覽器的人可能仍然會嘗試提交超大文件。

this webpagealso this one

0

我只是不認爲這是HTTP的範圍內可能發現,你將不得不使用閃光燈上傳這個我相信。服務器知道文件的大小的唯一方法是讓服務器獲取文件

退房http://www.swfupload.orghttp://demo.swfupload.org/v220/featuresdemo/index.php

+0

我居然看到了這個線程做的一個例子:http://forums.asp.net/p/1096161/ 1655494.aspx但我不太喜歡這個檢查是通過應用程序的所有請求完成的想法。 – nillls 2010-11-23 14:04:45

0

這聽起來像你有一個要求,廚房的水槽演示,「防止例外「,並且您認爲您應該實現該目標的一種方式,」檢查客戶端上的文件大小。「

您只能使用客戶端技術(如Flash或Silverlight)100%驗證客戶端上的文件大小。這可以防止發生異常,但會迫使您將自己與特定的客戶端技術聯繫起來。

您可以防止發生異常,但是在文件上傳之後確實發生了異常(出於您之前說明的原因)。檢查這篇文章的代碼示例:http://aspnetresources.com/articles/dark_side_of_file_uploads

在NeatUpload(開源,LGPL)等文件上傳組件中提供了類似的功能:http://www.brettle.com/NeatUpload-1.3/dotnet/docs/Manual.html - >請參閱第4.5節。

0

即使在上傳文件完全傳輸之前,也可以確定上傳文件的大小。即使使用Internet Explorer。通過使用HTTP的內容長度標題!
在java世界中:
首先,如果您在第一個servlet /過濾器/控制器中處理到達服務器的請求之前,那麼您之前將獲得總文件大小內容長度標頭(request.getContentLength())。

二線有一個Ajax實現一看證明,它是可能的:http://www.ajaxfilebrowser.com/