Windows Azure: невозможно загрузить файл размером 34 МБ в BLOB-объект - PullRequest
7 голосов
/ 12 апреля 2010

Я пытался загрузить файл размером 34 МБ в BLOB-объект, но он выдает сообщение об ошибке

    XML Parsing Error: no element found
Location: http://127.0.0.1:83/Default.aspx
Line Number 1, Column 1:

Что мне делать .... Как ее решить


Я могу загружать небольшие файлы размером 500 КБ .. но у меня есть файл размером 34 МБ для загрузки в мой контейнер BLOB-объектов

Я попробовал, используя

protected void ButUpload_click(object sender, EventArgs e)
        {
            // store upladed file as a blob storage
            if (uplFileUpload.HasFile)
            {
                name = uplFileUpload.FileName;
                // get refernce to the cloud blob container
                CloudBlobContainer blobContainer = cloudBlobClient.GetContainerReference("documents");

                // set the name for the uploading files
                string UploadDocName = name;

                // get the blob reference and set the metadata properties
                CloudBlob blob = blobContainer.GetBlobReference(UploadDocName);
                blob.Metadata["FILETYPE"] = "text";
                blob.Properties.ContentType = uplFileUpload.PostedFile.ContentType;

                // upload the blob to the storage
                blob.UploadFromStream(uplFileUpload.FileContent);

            }
        } 

Но я не могу загрузить его .. Может кто-нибудь сказать мне, как это сделать ....

Ответы [ 4 ]

8 голосов
/ 13 апреля 2010

BLOB-объекты размером более 64 МБ должны загружаться с использованием блочных объектов. Вы разбиваете файл на блоки, загружаете все блоки (связывает каждый блок с уникальным строковым идентификатором) и в самом конце публикуете список идентификаторов блоков в BLOB-объект, чтобы за один раз зафиксировать весь пакет.

Загрузка в блоках также рекомендуется для больших двоичных объектов размером менее 64 МБ. Для икоты в сетевом соединении или маршрутизации через Интернет очень легко потерять один или два кадра при очень большой загрузке, что приведет к повреждению или аннулированию всей загрузки. Используйте меньшие блоки, чтобы уменьшить воздействие космических событий.

Дополнительная информация в этой теме: http://social.msdn.microsoft.com/Forums/en-NZ/windowsazure/thread/f4575746-a695-40ff-9e49-ffe4c99b28c7

1 голос
/ 11 марта 2013

Используйте служебную программу Blob Transfer для загрузки и загрузки всех ваших файлов BLOB-объектов.

Это инструмент для эффективной обработки тысяч (маленьких / больших) передач больших двоичных объектов.

Двоичные файлы и исходный код, здесь: http://bit.ly/blobtransfer

1 голос
/ 01 ноября 2011

Вы можете использовать Blobs здесь. Я думаю, что это проблема с размером вашего веб-запроса. Вы можете изменить этот параметр в файле web.config, увеличив число атрибутов maxRequestLength в элементе. Если вы отправляете куски размером 500 Кб, то вы теряете пропускную способность и снижаете производительность. Отправляйте большие порции данных, например, 1-2 Мб на порцию. См. Мой элемент управления загрузкой Silverlight или HTML5 для фрагментированных загрузок Выберите элемент управления загрузкой файлов Azure: Silverlight и TPL или HTML5 и AJAX

1 голос
/ 12 апреля 2010

Я бы начал с того, что пропустил вход в проект, чтобы попытаться отследить проблему. Это может не произойти там, где вы думаете. Также может быть ошибка прав доступа. Попробуйте добавить несколько фиктивных данных в базу данных. Если это все еще терпит неудачу, это могло бы быть потенциальной проблемой.

Но отследите это сами с помощью некоторой отладки, регистрации и некоторого обзора кода, держу пари, что вы сможете быстрее разобраться в проблеме. И это также поможет сделать ваш код более надежным.

...