Загрузить несколько файлов в MVC ASP.NET - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь использовать это Just Upload One Files, и в моем случае мне нужно загрузить несколько файлов

public ActionResult Create(HttpPostedFileBase file){
    string filename = Path.GetFileName(file.FileName);
                string contentType = file.ContentType;
                string folder = Server.MapPath("~/Files");
                using (Stream fs = file.InputStream)
                {
                    using (BinaryReader br = new BinaryReader(fs))
                    {
                        byte[] bytes = br.ReadBytes((Int32)fs.Length);
                        file.SaveAs(Path.Combine(folder, filename));
                    }
                }
}

This My form

@using (Html.BeginForm("Create","P_m",FormMethod.Post,new { @enctype = "multipart/form-data" }))
{
<input type="file" name="File" multiple />
}

Моя проблема Просто загрузите один файл, но Мне нужно загрузить несколько файлов ...

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Вы можете использовать приведенный ниже пример кода для одновременной загрузки нескольких файлов.

Html Код: -

<html>
<head>
    <title>Index</title>
</head>
<body>
    <div>
        @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
        {
            <span>Select File:</span>
            <input type="file" name="postedFiles" multiple="multiple"/>
            <hr/>
            <input type="submit" value="Upload"/>
            <br/>
            <span style="color:green">@Html.Raw(ViewBag.Message)</span>
        }
    </div>
</body>
</html>

Контроллер: -

простота обращения моя статья Показать (передать) строковое сообщение от контроллера для просмотра в ASP. Net MVC.

public class UploadController : Controller
{
    // GET: Home     
    [HttpPost]
    public ActionResult Index(List<HttpPostedFileBase> postedFiles)
    {
        string path = Server.MapPath("~/Uploads/");
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }

        foreach (HttpPostedFileBase pFile in postedFiles)
        {
            if (postedFile != null)
            {
                string fileName = Path.GetFileName(pFile.FileName);
                pFile.SaveAs(path + fileName);
                ViewBag.Message += string.Format("<b>{0}</b> uploaded.<br />", fileName);
            }
        }

        return View();
    }
}
1 голос
/ 18 июня 2020

Вы можете использовать Request.Files или модели просмотра со свойством:

public IEnumerable<HttpPostedFileBase> files {get;set;}

Просто замените свой код на IEnumerable. Если вы хотите использовать Request.Files, вам следует изменить структуру кода на:

foreach (string requestFileName in Request.Files)
{
    HttpPostedFileBase file = Request.Files[requestFileName];

    string filename = Path.GetFileName(file.FileName);
    string contentType = file.ContentType;
    string folder = Server.MapPath("~/Files");
    using (Stream fs = file.InputStream)
    {
        using (BinaryReader br = new BinaryReader(fs))
        {
            byte[] bytes = br.ReadBytes((Int32)fs.Length);
            file.SaveAs(Path.Combine(folder, filename));
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...