Подтвердить что ты не робот

ASP.net - многократная загрузка с плагином загрузки нескольких файлов jQuery

Я знаю, как загружать с помощью ASP.net FileUpload.

Что я хочу сделать, это использовать этот jQuery Multiple File Upload Plugin для загрузки нескольких файлов.

Вот как это сделать, когда для загрузки выбрано несколько файлов:

<input type="file class="multi MultiFile" id="MultiFile1_F3" name="file1[]" style="position: absolute; top: -3000px;">

Но я не могу понять, как манипулировать этими файлами с asp.net. Я попытался использовать Request.Files, как указано в следующей ссылке: ASP.Net Загрузка нескольких файлов после их выбора из jQuery

Это не работает. Я думаю, что работает только для элементов управления, отмеченных runat = "server" во время компиляции.

Кто-нибудь знает, как это сделать? Может быть что-то в Request.Form...?

Спасибо за вашу помощь!

4b9b3361

Ответ 1

Это было немного, так как я делал такие вещи в .NET, но как только вы начинаете клонирование форм ввода динамически, я думаю, вам нужно выйти в Request.Form и найти представленные значения вручную. Я написал код jQuery для клонирования некоторых (нефайловых) входов с последовательными идентификаторами здесь. Пока у вас есть уникальные идентификаторы, вы можете запустить цикл, чтобы узнать, существует ли Request.Form [ "MultiFile1_F" + counter].

Ответ 2

Две вещи для проверки:

  • Убедитесь, что в вашей форме установлен атрибут enctype = "multipart/form-data". Это необходимо для включения загрузки.
  • Убедитесь, что все входы файлов имеют как идентификаторы атрибутов id, так и имя. По какой-то причине, если вы не устанавливаете оба, происходят странные вещи.

Кроме того, runat = "server" не должен иметь никакого отношения к тому, работает ли Request.Files или нет - это больше проблема браузера, отправляющего файлы.

Ответ 3

Этот плагин jQuery предоставляет каждому сгенерированному входному управлению тот же самый атрибут имени.

По этой причине файлы не отправлялись.

Я построил собственное решение для javascript.

Я напишу ссылку на код в комментарии.

Изменить

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

1.) Включите библиотеку jQuery в веб-форму:   

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" />

2.) Ссылка на множественный файловый плагин в веб-форме (Загрузить здесь):

<script src="jquery.MultiFile.pack.js" type="text/javascript">

3.) Добавьте входной файл в свою веб-форму с помощью class= "multi":

<input type="file" class="multi" />

4.) Выполните какой-либо код или вызовите метод, подобный этому при отправке формы:

    void SendMail(string from, string to, string subject, string body, string smtpServer)
    {
        // create mail message
        MailMessage mail = new MailMessage(from, to, subject, body);

        // attach posted files
        for (int i = 0; i < Request.Files.Count; i++)
        {
            HttpPostedFile file = Request.Files[i];
            mail.Attachments.Add(new Attachment(file.InputStream, file.FileName));
        }

        //send email
        new SmtpClient(smtpServer).Send(mail);
    }

Это все, что я должен был сделать, чтобы прикрепить несколько файлов к электронной почте, отправленной с страницы aspx.

Если вы хотите увеличить общий размер файлов, которые могут быть загружены, добавьте это в свой файл web.config:

<system.web>
    <httpRuntime executionTimeout="240" maxRequestLength="30720"/>
</system.web>

ИсполнениеTimeout измеряется в секундах, а maxRequestLength измеряется в килобайтах. В этом примере запрос будет истекать через 4 минуты и позволит запросить 30 мб.

Ответ 4

Я очень рекомендую Uploadify как многопользовательский загрузчик файлов. Он использует jquery и flash, чтобы пользователь мог загружать сразу несколько файлов через ctrl + щелчок по всем желаемым файлам. Затем он отображает очередь загрузки файлов и удаляет файл из очереди по завершении. Он также позволяет указать, какое расширение позволяет пользователю также загружать, что мешает вам выполнять проверку расширения.

EDIT:
Если вы не хотите использовать flash Ajax Upload, тоже хорошо работает. Если у пользователей сайта моего сайта не будет подходящей версии флеш-памяти, которая лучше всего работает с uploadify, я переключусь на Ajax Upload. Они оба работают очень хорошо для меня.