Загрузка нескольких файлов с использованием c # в среде ASP.NET 4.0 - PullRequest
10 голосов
/ 01 апреля 2011

Я ищу решение для загрузки нескольких файлов (нажмите кнопку обзора и выберите несколько файлов с помощью клавиши Shift).

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

Ответы [ 6 ]

5 голосов
/ 07 января 2014

Мы использовали приведенный ниже плагин jQuery, чтобы помочь нам.

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

После включения необходимого js файла: jQuery.multifile.pack.js, мы можем использовать его, как показано ниже.

<input type="file" id="flAttachment" runat="server" tabindex="8" class="multi max-3 accept-gif|jpg|xlsx|xls|doc|docx|pdf|png" size="37" />

Предоставление class="multi" позволяет принимать более одного файла.

Вы также можете применить ограничения, если хотите. Например, class = "max-3" позволит загружать максимум три файла. class = "accept-gif|jpg" позволяет загружать только файлы с расширениями gif ИЛИ jpg.

Для получения нескольких файлов на стороне сервера вам необходимо указать namespace: System.Web;

Тогда вы можете получить приведенный ниже код для перебора каждого загруженного файла.

if (Request.Files.Count > 0)
{
    HttpFileCollection attachments = Request.Files;
    for (int i = 0; i < attachments.Count; i++)
    {
        HttpPostedFile attachment = attachments[i];
        if (attachment.ContentLength > 0 && !String.IsNullOrEmpty(attachment.FileName))
        {
            //do your file saving or any related tasks here.
        }
    }
}

Это будет независимо от .net framework версии.

5 голосов
/ 27 декабря 2013

Установите свойство «AllowMultiple = true», как показано ниже.Это свойство доступно для платформы 4.5.

 <asp:FileUpload ID="file_upload" runat="server" AllowMultiple="true" />

Это позволит вам выбрать несколько файлов одновременно

Код Aspx:

<form id="form1" runat="server">
    <div>
        <asp:FileUpload ID="file_upload" runat="server" AllowMultiple="true" />
        <asp:Button ID="btnFileUpload" runat="server" Text="Upload" OnClick="btnFileUpload_Click" />
        <asp:Label ID="lblUploadStatus" runat="server"></asp:Label>
    </div>
</form>

Код Aspx.cs:

protected void btnFileUpload_Click(object sender, EventArgs e)
{
    try
    {
        if (file_upload.HasFile && file_upload.PostedFiles.All(x => x.ContentType == "image/jpeg" && x.ContentLength < 102400))
        {
            foreach (var file in file_upload.PostedFiles)
            {
                file_upload.SaveAs(Server.MapPath("~/") + Path.GetFileName(file.FileName));
            }
            lblUploadStatus.Text = "File(s) uploaded successfully.";
        }
        else
        {
            lblUploadStatus.Text = "Please upload proper file.";
        }
    }
    catch (Exception ex)
    {
        lblUploadStatus.Text = "Error in uploading file." + ex.Message;
    }
}
5 голосов
/ 01 апреля 2011

<input type="file"> сильно заблокирован веб-браузером из-за проблем безопасности. Он не допускает выбор нескольких файлов. Для этого вам понадобится Flash или Silverlight или несколько полей <input type="file">.

Вы можете позволить пользователю выбрать один файл, а затем предоставить кнопку «Добавить другой файл», которая генерирует входные данные для загрузки другого файла с использованием jQuery. Таким образом, вы сможете разрешить неограниченное количество загрузок, но пользователю придется просматривать каждую из них в отдельности.

Кстати, HTML 5 будет поддерживать загрузку нескольких файлов, но в современных веб-браузерах он широко не реализован и поэтому не подходит.

1 голос
/ 01 апреля 2011

Как сказал Джастин, вам придется использовать Flash или Silverlight. Я взял последний из двух и очень доволен.

Посмотрите на Silverlight Multi File Uploader на Codeplex. Это то, что я использовал, и это было здорово. Это также очень легко настроить в соответствии с вашими потребностями. На данный момент для меня загружено около 10 000 изображений, и он никогда не пропускал ни одного удара.

0 голосов
/ 14 марта 2013

Вы можете использовать функцию перетаскивания JQeryFileUpload, мы используем ее для нашей CMS, и наши пользователи, кажется, довольны решением, вы можете попробовать демонстрационный сайт здесь .Просто отбросьте столько файлов, сколько хотите, и вы увидите его в действии. Это легко настраивается.

0 голосов
/ 14 марта 2013

Вам просто нужно добавить атрибут множественного числа, как этот

<input type="file" name="postedFiles" id="InvoiceAttachmentsFiles" multiple="multiple" />

проверить этот сайт

http://www.aspdotnet -suresh.com / 2012/12 / САШИ-загрузка-несколько-файлы-using.html

и вы также можете использовать это

http://www.dotnetfunda.com/articles/article1062-fileupload-uploading-file-to-the-server-without-clicking-a-button.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...