我正在使用FileUpload控件来允许用户将文件上传到SQL数据库。
我有一个按钮,用于通过C#代码加载所选文件。
但是,如果文件大小具有一定的大小,则上载失败。我在C#代码上有一个断点,当大小很大时它永远不会被击中,但是当文件大小正常时它会发生。这是我可以放置支票的地方,但断点不会被击中!??!
实施此方法的最佳方法是什么?我应该使用JavaScript吗?
按钮后面的C#代码位于下方,但它永远不会被解雇:
protected void buttonAddDocumentType_Click(object sender, EventArgs e)
{
int size = fileUploadDocument.PostedFile.ContentLength;
//This is where I'd like to perform the file size check
byte[] fileData = new byte[size];
fileUploadDocument.PostedFile.InputStream.Read(fileData, 0, size);
WebDataAccess.InsertDocument(Int32.Parse(Request.QueryString["ID"].ToString()), Int32.Parse(comboDocumentTypes.SelectedValue), fileUploadDocument.FileName, fileUploadDocument.PostedFile.ContentType,
fileUploadDocument.FileBytes.Count(), fileData);
comboDocumentTypes.SelectedIndex = -1;
}
我正在使用ASP.Net 4.0
提前致谢。
答案 0 :(得分:1)
Asp.Net有文件上传的上限。您可以在web.config中配置此限制,并在启动文件上载事件之前验证此范围。
无法使用代码来捕获此错误,因为它发生在任何代码启动之前。
答案 1 :(得分:0)
首先,如果您的有效上传量大于4MB,则需要在web.config中增加maxRequestLength,
假设您接受最大10MB的文件,将其更改为16MB,现在您在代码中处理任何大于10MB的文件,并且asp.net运行时拒绝任何大于16MB的文件。您不希望将maxRequestLength更改为非常高的数字,因为人们可能会使用大文件攻击您的服务器。
<system.web><httpRuntime maxRequestLength="16384" />
您可以查看
fileImageControl.PostedFile.InputStream.Length
在你打电话之前的属性:
fileImageControl.PostedFile.SaveAs
我总是将所有上传的文件保存到临时目录中,并在将它们保存到最终位置之前对它们进行一些检查。您还可以将它们标记为“从Internet下载”,因此Windows会相应地对待它们(但如果将它们保存到数据库中则不起作用)。