Загрузить несколько файлов / получить доступ к идентификатору входа на сайте сервера - PullRequest
1 голос
/ 02 августа 2010

Я пытаюсь загрузить пару файлов. Сама загрузка хорошо работает для одной загрузки, но я не могу понять, как получить доступ к имени элемента, чтобы убедиться, что каждая загрузка назначена на правильное поле. HttpPostedFileBase, похоже, больше не содержит информацию такого типа.

public ActionResult Edit(int id, FormCollection collection) {
    Report report = re.GetReport(id);
    var fileNames = new List<string>();

    foreach (string file in Request.Files) {
        var postedFile = Request.Files[file] as HttpPostedFileBase;
        if (postedFile.ContentLength == 0)
            continue;
        fileNames.Add(UploadFile(basedir, postedFile));
    }

    // Rather than guessing which is which I'd like to get the field name or id.
    report.Image = fileNames[0];
    report.File = fileNames[1];

    UpdateModel(report, "report");
    rep.Save();

В представлении у меня есть

<%: Html.LabelFor(model => model.report.Image)%>
<input id="report_Image" type="file" name="Image" />  

<%: Html.LabelFor(model => model.report.File)%>
<input id="report_Image" type="file" name="File" />   

Спасибо, Duffy

Ответы [ 3 ]

0 голосов
/ 16 ноября 2010

Я использую uploadify в моих приложениях MVC.Это бесплатное и отличное решение для загрузки нескольких файлов.

http://www.uploadify.com/

http://trycatchfail.com/blog/post/2009/05/13/ASPNET-MVC-HtmlHelper-for-Uploadify-Take-One.aspx

0 голосов
/ 16 марта 2011
  var fileNames = new List<string>();

        foreach (string file in Request.Files) {
            var postedFile = Request.Files[file] as HttpPostedFileBase;
            if (postedFile.ContentLength == 0)
                continue;
            fileNames.Add(UploadFile(basedir,postedFile));
        }

Файл переменной в foreach содержит имя вашего поля ввода.Таким образом, его значение будет соответственно Image и File.Я проверил это в MVC2

Так что вы можете сделать так

 var fileNames = new Dictionary<string,string>();

                foreach (string file in Request.Files)
                {
                    var postedFile = Request.Files[file] as HttpPostedFileBase;
                    if (postedFile.ContentLength == 0)
                        continue;
                    fileNames.Add(file,UploadFile(basedir,postedFile));
                }

                //Now you have added the values with key so you can use the
                //input field name to access them
                report.Image = fileNames["Image"];
                report.File = fileNames["File"];
0 голосов
/ 03 августа 2010

Фил Хаак недавно написал в блоге об этом, возможно, его пример поможет.

Вы также можете посмотреть расширение файла, чтобы определить, какой это файл.

Можете ли вы использовать Request.Files ["File"] и Request.Files ["Image"]?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...