我无法将用户可能发布的文件分隔到单独的input type =“file”字段。我试过了:
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检索它们?
答案 0 :(得分:2)
向页面添加多个input type = file元素时,上传的文件在Request.Files集合中可用。您可以在代码显示时迭代它,并对集合中的每个文件执行您喜欢的任何操作:
if(Request.Files.Count > 0){
foreach(var file in Request.Files){
...
}
}
如果您有不同的输入类型=文件用于特定目的,您可以通过提供名称属性来识别它们:
<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
}
}