多个文件的文件上传文件大小asp .net c#

时间:2016-02-23 17:39:40

标签: c# asp.net

我正在尝试使用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

我可以用什么来实现我的目标?

2 个答案:

答案 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我认为这就是你要找的东西..让我知道它是否适合你。