1

我在分隔用户可能发布到单独输入类型 =“文件”字段的文件时遇到问题。我试过了:

var UploadedPicture = Request.Files[0];
    if(Path.GetFileName(UploadedPicture.FileName) != String.Empty)
    {
        var ContentType = UploadedPicture.ContentType;
        var ContentLength = UploadedPicture.ContentLength;
        var InputStream = UploadedPicture.InputStream;
        Session["gMugshot"] = new byte[ContentLength];
        InputStream.Read((byte[])Session["gMugshot"], 0, ContentLength);
    }
    else
    {
        Session["gMugshot"] = new byte[0];
    }

但这只会得到一个文件。我试过了

foreach (HttpPostedFile postedFile in Request.Files)
        {
            int contentLength = postedFile.ContentLength;
            string contentType = postedFile.ContentType;
            string fileName = postedFile.FileName;

            postedFile.SaveAs(@"c:\test\file" + index + ".tmp");
        } 

    }

但这并没有将它们分开(另外,我不想保存文件,我只想将它存储在数据库中,但这部分没问题)。他们每个人都需要进入单独的数据库字段。我可以使用单个图像进行此操作,但不知道如何使用多个图像。如果可能的话,我想使用input type="file"字段而不是FileUpload.GetHtml(initialNumberOfFiles:1, allowMoreFilesToBeAdded:false, includeFormTag:false)助手。

是否可以通过输入元素的 ID 检索它们?

4

1 回答 1

2

当您将多个 input type=file 元素添加到页面时,上传的文件在 Request.Files 集合中可用。您可以在代码显示时对其进行迭代,并对集合中的每个文件执行您喜欢的任何操作:

if(Request.Files.Count > 0){
    foreach(var file in Request.Files){
        ...
    }
}

如果您有不同的输入 type=file 用于特定目的,您可以通过提供 name 属性来识别它们:

<input type=file name="file1" />
<input type=file name="file2" />
<input type=file name="file3" />

name 属性中的值在Request.Files.AllKeys中可用,这是一个字符串数组,因此您可以通过索引引用每个项目,例如

if(IsPost && Request.Files.Count > 0){
    var file3 = Request.Files[Array.IndexOf(Request.Files.AllKeys, "file3")];
    if(file3.ContentLength > 0){
        //there is a file there
    }
}
于 2012-10-25T08:23:41.623 回答