Загрузка нескольких файлов в хранилище BLOB-объектов Azure - PullRequest
6 голосов
/ 25 июля 2011

Довольно новый для Windows Azure. Я следовал этому уроку: урок . Он работает отлично, однако одно ограничение заключается в том, что для приложения, которое я имею в виду, должна быть возможность загружать несколько файлов относительно быстро.

Можно ли изменить учебник для поддержки загрузки нескольких файлов, например, Пользователь может использовать shift-click для выбора нескольких файлов ..

Или, если кто-нибудь знает какие-нибудь хорошие учебники, подробно описывающие вышесказанное?

Любая помощь приветствуется,

Спасибо

1 Ответ

9 голосов
/ 25 июля 2011

Я бы взглянул на это учебное пособие от DotNetCurry, которое показывает, как создать загрузку нескольких файлов с помощью jQuery для обработки множественной загрузки файлов на страницу ASP.NET.Он построен с использованием ASP.NET 3.5, но это не должно иметь значения, если вы используете .NET 4 - в этом нет ничего слишком сумасшедшего.

Но ключ в том, что плагин jQuery позволит вамзагрузить коллекцию файлов на сервер.Код ASP.NET будет обрабатывать это путем циклического перемещения по коллекции Request.Files:

    HttpFileCollection hfc = Request.Files;
    for (int i = 0; i < hfc.Count; i++)
    {
        HttpPostedFile hpf = hfc[i];
        if (hpf.ContentLength > 0)
        {
            hpf.SaveAs(Server.MapPath("MyFiles") + "\\" +
              System.IO.Path.GetFileName(hpf.FileName));
            Response.Write("<b>File: </b>" + hpf.FileName + " <b>Size:</b> " +
                hpf.ContentLength + " <b>Type:</b> " + hpf.ContentType + " Uploaded Successfully <br/>");
        }
    }

. Этот код вы поместите в свое руководство в обработчике событий insertButton_Click - по сути, добавьте создание и загрузку BLOB-объектов.чтобы поместить в бланк хранилище внутри блока if(hpf.ContentLength>0) указанного кода.

Таким образом, псевдокод может выглядеть следующим образом:

protected void insertButton_Click(object sender, EventArgs e)
{
    HttpFileCollection hfc = Request.Files;
    for (int i = 0; i < hfc.Count; i++)
    {
      HttpPostedFile hpf = hfc[i];

      // Make a unique blob name
      string extension = System.IO.Path.GetExtension(hpf.FileName);

      // Create the Blob and upload the file
      var blob = _BlobContainer.GetBlobReference(Guid.NewGuid().ToString() + extension);
      blob.UploadFromStream(hpf.InputStream);

      // Set the metadata into the blob
      blob.Metadata["FileName"] = fileNameBox.Text;
      blob.Metadata["Submitter"] = submitterBox.Text;
      blob.SetMetadata();

      // Set the properties
      blob.Properties.ContentType = hpf.ContentType;
      blob.SetProperties();
    }
}

Опять же, это просто псевдокод, так что я предполагаю, что этоэто будет работать.Я не тестировал синтаксис, но думаю, что он близок.

Надеюсь, это поможет.Удачи!

...