Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 文件上载多个文件的文件大小asp.net c_C#_Asp.net - Fatal编程技术网

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

C# 文件上载多个文件的文件大小asp.net c,c#,asp.net,C#,Asp.net,我正在尝试使用asp:FileUpload控件将多个文件上载到asp.net网站。 一切正常,但我需要将每个文件大小保存到数据库中 我试图使用 fil_AttachmentLink.PostedFiles中的foreach var文件 并通过file.ContentLength获取文件大小 但它总是0 我也试过了 对于int i=0;i在每次文件更改时将所有文件大小存储在隐藏字段中,如下所示: $('#<%= fil_AttachmentLink.ClientID %>').cha

我正在尝试使用asp:FileUpload控件将多个文件上载到asp.net网站。 一切正常,但我需要将每个文件大小保存到数据库中

我试图使用

fil_AttachmentLink.PostedFiles中的foreach var文件 并通过file.ContentLength获取文件大小 但它总是0

我也试过了 对于int i=0;i
我可以用什么来实现我想要的呢?

这很容易实现。完成html的主要代码之后,就可以开始实际的编码了。我有一个来自代码项目的链接,它解释了从步骤1到终点的过程。我已经用过好几次了我想这就是你想要的。。让我知道它是否适合你。

我已经实现了我想要的,但我并不为它的实现方式感到骄傲,所以如果有人能建议少一点肮脏的方式,我将不胜感激。。 这就是我所做的, 客户端->在每次文件更改时将所有文件大小存储在隐藏字段中,如下所示:

 $('#<%= 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();
服务器端-从隐藏字段获取INT列表,如下所示:

 $('#<%= 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...
}

同样有效,但我希望有更好的方法…

不要只链接到博客帖子这里有更多关于如何为stackoverflow站点设计好答案的指导。答案就是答案,如果我要解释整件事,那么像你这样的人会说它太长了。如果我发布了一个简短的版本,那么像你这样的人会说它太短了。。所以他问了一个问题,我给了他一个答案。如果这对他有帮助,那就好了。如果没有,那么其他人会回答。这不全是关于选票、利率和分数。所以你可以把它带到别的地方。我在帮助别人,所以如果你想玩巨魔,那就去打扰别人。不,你的回答根本不能回答这个问题。OP在问为什么文件报告长度为0,而你的答案和链接的页面都没有回答。他并没有试图控制。这是有效的反馈。如果你有一个链接,最好只是把它作为一个评论。其他网站充斥着简单的链接答案,你最终只会找到很多无用的线索。引用链接是可以的,但是你没有真正回答他的问题,为什么他的文件长度是0。那么,回答他的问题,而不是拖拉@codecaster我发现,在回发过程中,您可能会丢失文件本身。。。注意,你上传了多少文件,Request.files.Count是多少?可以跳过零长度文件吗?至少1个文件,最多10个。Request.Files.Count是请求中的许多文件。我可以像这样访问客户端上的文件大小:对于var I=0;i