2011-06-13 242 views
4

我正在使用AsyncFileUpload以允許用戶異步上傳文件。AsyncFileUpload限制文件大小上傳

我想限制文件大小爲1MB。

到目前爲止,什麼我見過,我只能上傳完成

上傳開始時像後得到的文件長度:

(OnClientUploadStarted)

function UploadStarted(sender,args) 
{ 
    //if bigger than 1MB (approximately) 
    if (args.get_length() > 1000000) 
    { 
     ShowActionNotificationError(errorMessage); 
     return false; 
    } 
} 

ARGS。 get_length()爲空,所以我不能使用它...

並且當上傳完成時:

(OnClientUploadComplete)

function UploadComplete(sender,args) 
{ 
    //if bigger than 1MB (approximately) 
    if (args.get_length() > 1000000) 
    { 
     ShowActionNotificationError(errorMessage); 
     return false; 
    } 
} 

工程確定,但文件已被上傳...

所以,我怎樣才能知道文件上傳之前的大小?我錯過了很簡單的事情嗎?

我真的很喜歡這樣做,而無需處理HTTP請求長度和排序。

謝謝!

回答

5

一些實質性的研究,我知道這不能使用AJAX來完成之後。

當我瀏覽諸如yahoo郵件和Gmail等網站時,它是通過Flash完成的。

在hotmail中使用Silverlight完成。

有一個叫Uploadify自由(現在)閃存上傳控件...

我現在正在整合它。

如果我錯了,請糾正我! :)

0

您可以FileUploadComplete方法檢查它的大小在服務器端

void FileUploadComplete(object objSender, AsyncFileUploadEventArgs e) 
{ 
    if (e.get_length() > 1000000) 
    { 
     ShowActionNotificationError(errorMessage); 
     return false; 
    } 
} 
+0

是的,但是......如果用戶選擇了一個100MB的文件上傳,他等了很長時間才能完成,只有這樣他纔會意識到它太大了?我之前想知道... – Mithir 2011-06-13 08:02:36

+0

只要你選擇要上傳的文件就會觸發這個事件處理程序...所以你可以在它進入這個處理程序時檢查它的大小....如果它的限制,去前進&上傳其他爆發。 – Misam 2011-06-13 08:07:13

+0

如果它一旦被擊中......我如何停止進程並向用戶顯示錯誤而不刷新? – Mithir 2011-06-13 08:25:03

0

是的,Mithir說的是正確的。使用HTML控件提供現代用戶體驗非常麻煩。 另一種替代方法是SWFUpload

0

如果您需要在內容實際上傳到服務器之前檢查文件大小,那麼您最好使用asp組件FileUpload。有了這個,你可以檢查並決定是否要上傳文件。

If FileUpload1.FileContent.Length <= DesiredFileSize Then 

    <<Code to Upload the file>> 

End If 
+0

OP正在尋找一個文件大小的客戶端檢查。這是一個服務器端檢查。無論如何,該文件必須上傳,這不是OP想要的。 – Scott 2012-10-28 17:32:59

0

CERO年02月14 '12在5點51分

的FileUpload1沒有功能是爲UpdatePanel的:

控制是不兼容的UpdatePanel控制

下面的ASP。NET控件與部分頁面更新不兼容,因此不適用於UpdatePanel控件內部:

在幾種情況下的Treeview控件。一種是當回調是 啓用不屬於異步回發的一部分。另一種情況是, 直接將樣式設置爲控件屬性而不是隱式地設置 通過使用對CSS樣式的引用來設置控件的樣式。另一個是 ,當EnableClientScript屬性爲false時(默認爲true)。 另一種情況是,您在異步回發之間更改EnableClientScript屬性 的值。

當您將樣式直接設置爲控件屬性 而不是通過使用CSS 樣式的引用隱式設置控件的樣式時,進行菜單控制。

FileUpload和HtmlInputFile控件當它們用於上傳 文件作爲異步回發的一部分時。

GridView和DetailsView控件何時將其 EnableSortingAndPagingCallbacks屬性設置爲true。默認 是錯誤的。

Login,PasswordRecovery,ChangePassword和CreateUserWizard控件 其內容尚未轉換爲可編輯模板。

替代控制。

要在UpdatePanel控件內使用FileUpload或HtmlInputFile控件,請將提交該文件的回發控件設置爲面板的PostBackTrigger控件。 FileUpload和HtmlInputFile控件只能用於回發場景。

4

您可以在客戶端上傳開始事件中執行此操作。

if (sender._inputFile.files[0].size >= maxFileSize) { 
    sender._stopLoad(); 
} 

_stopLoad會調用您的Upload Error事件。