在Asp.net MVC中保存来自多个文件上传的文件

时间:2018-02-28 10:39:56

标签: c# asp.net model-view-controller file-upload entity-framework-6

所以我的视图有大约6个文件上传控件。注意,视图有其他控件都很好。提交后,我需要创建一个文件夹并将提交的文件保存到该文件夹​​中,然后将实体保存到数据库中。

问题:将保存的文件路径映射到模型的相应属性的最佳方法是什么?我可以使用开关盒做到这一点,但我不喜欢他们这样做的方式。请注意,并非所有文件都是强制性的?

示例代码:

int index = 0;
foreach (var file in files)
{
    if (file != null && file.ContentLength > 0)
    {
        var fileName = Path.GetFileName(file.FileName);

        var path = Path.Combine(dpath, fileName);
        file.SaveAs(Server.MapPath(path));
        switch (index)
        {
            case 0:
                t.file1 = path;
                break;
            case 1:
                t.file2 = path;
                break;
            case 2:
                t.file3 = path;
                break;
            case 3:
                t.file4 = path;
                break;
            case 4:
                t.file5 = path;
                break;
            case 5:
                t.file6 = path;
                break;
        }
    }
    index++;
}

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

这不是最好的方法,视图页面中 fileUpload 控件的顺序取决于 t.file(模型)。这只是另一种选择:

public virtual ActionResult UploaderAction(SomeViewModel t, HttpPostedFileBase [] uploadedFile)
{ 
    for(int i = 0; i < uploadedFile.length; i++)
    {
        if (uploadedFile[i] != null && uploadedFile[i].ContentLength > 0)
        {
            var fileName = Path.GetFileName(uploadedFile[i].FileName);

            var path = Path.Combine(dpath, fileName);
            uploadedFile[i].SaveAs(Server.MapPath(path));

            t.file[i] = path;
        }
    }
}