如何解决如何访问httppostedfilebase 数组的单个元素?
我正在开发 ASP.NET MVC Web 应用程序。我想在单个输入控件上上传多个文件。 在我看来:
<input type="file" name="files" multiple="multiple">
我的模型:
public HttpPostedFileBase[] files { get; set; }
现在,在我的控制器中,我试图访问每个文件:
if (files[0] == null)
{
}
if (files[1] == null)
{
}
但如果该索引处不存在对象,则会出现异常:
“索引超出数组范围。”
那么如何检查对象是否存在于该索引处?
我不能使用 foreach
,因为我想分别处理每个文件。那么除了 foreach
之外还有其他选择吗?
解决方法
如果您打算以不同的方式对待文件,那么我假设您知道如何分别识别每个文件。如果是这样,为什么不命名文件,像这样。
//javascript
if (this) {
//code to identify what file is what
fileData.append("ticket",this.files[0]);//assuming you have identified it as so
fileData.append("passport",this.files[1]);//assuming you have identified it as so
$.ajax({
url: '/ctrl/Upload',type: "POST",async: true,contentType: false,// Not to set any content header
processData: false,// Not to process data
data: fileData,success: function (result) {
//success
},error: function (err) {
console.log(err);
},complete: function () {
//complete
}
});
}
然后您可以从控制器执行此操作
//c#
public ActionResult Upload()
{
var files = System.Web.HttpContext.Current.Request.Files;
var result = UploadFile(currentUser,files);
}
UploadFile(HttpPostedFileBase[] files)
{
string formKey1 = "ticket";
string formKey2 = "passport";
var file1 = System.Web.HttpContext.Current.Request.Files[formKey1];
var file2 = System.Web.HttpContext.Current.Request.Files[formKey2];
{
//treat file 1
}
{
//treat file 2
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。