微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何访问httppostedfilebase 数组的单个元素?

如何解决如何访问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 举报,一经查实,本站将立刻删除。