Member 12183079 Ответов: 1

Как загрузить несколько файлов с помощью нескольких элементов управления fileupload в ASP.NET?


У меня есть веб-страница (. aspx), которая содержит несколько элементов управления FileUpload.

<asp:FileUpload ID="flpProspectus"  AllowMultiple="true" class="form-control" runat="server"  Style="width: 40%; margin-top: -12px;" />
<asp:FileUpload ID="flpOrientation"  AllowMultiple="true" class="form-control" runat="server"  Style="width: 40%; margin-top: -12px;" />


Умолчанию.aspx-файл.в CS
public void FileUpload1()
    {
        if (flpProspectus.HasFile)
        {
            string fileExtension = System.IO.Path.GetExtension(flpProspectus.FileName);
            int fileSize = flpProspectus.PostedFile.ContentLength;
            HttpFileCollection hfc = Request.Files;
            string[] arr = new string[5];
            for (int i = 0; i < hfc.Count; i++)
            {
                HttpPostedFile hpf = hfc[i];
                if (hpf.ContentLength > 0)
                {
                    hpf.SaveAs(Server.MapPath("~/college/fileupload3/") + System.IO.Path.GetFileName(hpf.FileName));
                    string filepath = Server.MapPath("~/college/fileupload3/");
                    string path = "college/fileupload3/" + hpf.FileName;
                    if (i < 5)
                    {
                        arr[i] = path;
                        path1 = arr[0]; path2 = arr[1]; path3 = arr[2]; path4 = arr[3]; path5 = arr[4];

                    }

                }
            }
        }
    }


Что я уже пробовал:

Вот, Пожалуйста.Файлы будут получать вместе все файлы из обоих FileUploadControls.

Я не могу определить, какие файлы находятся в определенном элементе управления FileUpload?

Я знаю, что это возможно в 4.5, но мой текущий фреймворк-4.0, и я не хочу обновляться до 4.5. любое решение, использующее существующий фреймворк 4.0??

Помощь ценится!

Пожалуйста, обратите внимание: это не дублирующий вопрос, так как мое требование состоит в том, чтобы загрузить и идентифицировать файлы различных элементов управления FileUpload на одной странице.

1 Ответов

Рейтинг:
10

Bryian Tan

Почему бы не использовать свойство PostedFiles? Возможно, вам придется переписать "если (i < 5)...", не совсем понятно, что вы там пытаетесь сделать.

Обновленное решение для target Framework 4.0

if (flpProspectus.HasFile || flpOrientation.HasFile)
{
    string fileExtension = string.Empty; // System.IO.Path.GetExtension(flpProspectus.FileName);
    int fileSize = 0;// flpProspectus.PostedFile.ContentLength;
    HttpFileCollection hfc = Request.Files;
    string[] arr = new string[5];
    string path1, path2, path3, path4, path5 = string.Empty;
    string filePath = string.Empty;

    for (int i = 0; i < hfc.Count; i++)
    {
        if (hfc.GetKey(i) == "flpOrientation")
        {
            filePath = "college/fileupload3";
        }

        if (hfc.GetKey(i) == "flpProspectus")
        {
            filePath = "college/fileupload4";
        }

        fileExtension = System.IO.Path.GetExtension(hfc[i].FileName);
        fileSize = hfc[i].ContentLength;
        if (hfc[i].ContentLength > 0)
        {
            hfc[i].SaveAs(Server.MapPath(string.Format("~/{0}/", filePath)) + System.IO.Path.GetFileName(hfc[i].FileName));
            string filepath = Server.MapPath(string.Format("~/{0}/", filePath));
            string path = string.Format("{0}/", filePath) + hfc[i].FileName;
            if (i < 5)
            {
                arr[i] = path;
                path1 = arr[0]; path2 = arr[1]; path3 = arr[2]; path4 = arr[3]; path5 = arr[4];
            }
        }
    }
}


Member 12183079

Уважаемый господин
когда я пытаюсь этот код то я получаю ошибку в PostedFiles и я хочу strore путь в индексе массива потому что я хочу пройти в столбце где я сделал в таблице так что Кинли помогите мне

Bryian Tan

Что такое сообщение об ошибке?

Member 12183079

системы.веб.пользовательского интерфейса.webcontrols.fileupload 'не содержит определения для 'postedfile'

Bryian Tan

обратитесь к обновленному решению.

Member 12183079

извините, я не понял

Bryian Tan

Я обновил решение, взгляните.

Member 12183079

Спасибо

Member 12183079

сэр выше код работает, но я получаю проблемы, пути означает, что я упоминаю о 1 файл загрузки пользовательских элементов управления может выбрать только 5 файлов и 2-й файл загрузить контроль же 5 файл так полагаю, пользователей использовать в 1 файл контроля выгрузить всего 2 файла
поэтому я хочу сохранить путь к файлу только в path1 и path2 и path3 path4, путь 5 должен иметь нулевое значение, и пользователь выбирает второй файл upload control 3 file, затем файл должен быть strored в файле path6, path7 и path8, как это
так что, пожалуйста, помогите мне