我正在使用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请求长度和排序的情况下这样做。
谢谢!
答案 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控件只能在回发场景中使用。