我正在尝试使用asp:FileUpload
控件将多个文件上传到asp.net网站
一切正常,但我需要将每个文件大小保存到数据库中。
我试图使用
循环浏览文件 foreach (var file in fil_AttachmentLink.PostedFiles)
并按file.ContentLength
获取文件大小
但它总是0
。
我也试过了
for (int i = 0; i < Request.Files.Count; i++)
和Request.Files[i].ContentLength
但那也是0
。
我可以用什么来实现我的目标?
答案 0 :(得分:0)
我已经实现了我想要的东西,但我并不为它的成功方式感到自豪,所以如果有人可以建议少“肮脏”的方式,我会感激... 这就是我所做的, 客户端 - &gt;在每个文件的隐藏字段中存储所有文件大小,如下所示:
$('#<%= fil_AttachmentLink.ClientID %>').change(function () {
fileSize = 0;
var allSizes = "";
if (this.files[0]) {// file exists
if (this.files.length > 1)
$('.fileUploader').find("span").html(this.files.length + " files selected");
for (var i = 0; i < this.files.length; i++) {
fileSize += this.files[i].size; // total files size
allSizes = allSizes + this.files[i].size + ",";
}
allSizes = allSizes.substring(0, allSizes.length - 1); // remove last comma
}
$('#<%= hf_FileSize.ClientID %>').val(allSizes);
});
服务器端 - 从隐藏字段获取整数列表,如下所示:
List<int> sizes = (hf_FileSize.Value.Split(',').Select<string, int>(int.Parse)).ToList();
接下来循环遍历每个文件并访问我需要的所有属性和上面列表中的大小
for (int i = 0; i < Request.Files.Count; i++)
{
string ext = (Path.GetExtension(Request.Files[i].FileName));
string docName = Request.Files[i].FileName.Replace(ext, "");
int fileSize = sizes[i];
// save to database etc...
}
它再次起作用,但我希望有更好的方法......
答案 1 :(得分:-1)
这很容易实现。在为html执行主代码之后,您可以从实际编码开始。我有一个代码项目的链接,从第1步到结束行说明。我已经多次使用过http://www.codeproject.com/Articles/1757/File-Upload-with-ASP-NET我认为这就是你要找的东西..让我知道它是否适合你。