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. Они оба очень хорошо работают на меня.