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...?
Спасибо за вашу помощь!
Ответы
Ответ 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. Они оба работают очень хорошо для меня.