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

Я знаю, как загрузить с ASP.net ' S FileUpload control.

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

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

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

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

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

кто-нибудь знает, как это сделать? Может быть, что-то в просьбе.Форма...?

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

4 ответов


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


две вещи, чтобы проверить:

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

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


этот плагин 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.

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

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

executionTimeout измеряется в секундах, а maxRequestLength измеряется в килобайтах. В этом примере запрос будет тайм-аут после 4 минут и позволит запрос 30mb.


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

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