AsyncFileUpload限制要上载的文件大小

时间:2011-06-13 07:56:35

标签: javascript asp.net ajax 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()为null,所以我不能使用它......

上传完成后:

(OnClientUploadComplete)

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

工作正常,但文件已上传...

那么在上传之前如何知道文件的大小?我错过了一些非常简单的事情吗?

我真的很想在不处理HTTP请求长度和排序的情况下这样做。

谢谢!

6 个答案:

答案 0 :(得分:5)

经过一些实质性研究后,我意识到使用AJAX无法做到这一点。

当我浏览雅虎邮件和Gmail这样的网站时,它是由Flash完成的。

在Hotmail中

完成了Silverlight。

有一个名为Uploadify的免费(现在)flash上​​传控件...

我正在努力整合它。

如果我错了请指正! :)

答案 1 :(得分:4)

您可以在客户端上传启动事件中执行此操作。

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

_stopLoad将调用您的上传错误事件。

答案 2 :(得分:0)

您可以在服务器端的FileUploadComplete方法中检查其大小

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

答案 3 :(得分:0)

是的,Mithir说的是对的。使用HTML控件提供现代用户体验真的很麻烦。 另一种选择是SWFUpload

答案 4 :(得分:0)

如果您需要在将内容实际上传到服务器之前检查文件大小,那么最好使用asp组件FileUpload。有了这个,您可以检查并决定是否要上传文件。

If FileUpload1.FileContent.Length <= DesiredFileSize Then

   <<Code to Upload the file>>

End If

答案 5 :(得分:0)

CERO 12年12月14日5:51

FileUpload1 no适用于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控件只能在回发场景中使用。