it-swarm.com.ru

Как загрузить какой-либо файл в хранилище BLOB-объектов Azure, не создавая собственную программу?

Я создал учетную запись хранилища Azure. У меня есть файл .Zip размером 400 мегабайт, который я хочу поместить в хранилище больших двоичных объектов для дальнейшего использования.

Как я могу сделать это без написания кода? Есть ли какой-то интерфейс для этого?

44
sharptooth

Бесплатные инструменты:

  1. Visual Studio 2010 - установите инструменты Azure, и вы можете найти большие двоичные объекты в обозревателе серверов
  2. CloudBerry Explorer для хранилища больших двоичных объектов Azure Cloud Berry Lab
  3. ClumpsyLeaf CloudXplorer
  4. Azure Storage Explorer от CodePlex (попробуйте бета-версию 4)

Была старая программа под названием Azure Blob Explorer или что-то, что больше не работает с новым Azure SDK.

Из них мне лично больше нравится CloudBerry Explorer.

36
Stephen Chung

Самый простой способ - использовать Azure Storage PowerShell. Он предоставил много команд для управления вашим хранилищем контейнеров/BLOB-объектов/таблиц/очередей. 

Для упомянутого вами случая вы можете использовать Set-AzureStorageBlobContent, который может загрузить локальный файл в хранилище Azure в виде блочного или страничного блоба.

Set-AzureStorageBlobContent -Container containerName -File .\filename -Blob blobname

Для получения подробной информации, пожалуйста, обратитесь к http://msdn.Microsoft.com/en-us/library/dn408487.aspx .

18
Yao

Если вы ищете инструмент для этого, позвольте мне взглянуть на наш инструмент Cloud Storage Studio ( http://www.cerebrata.com/Products/CloudStorageStudio ). Это коммерческий инструмент для управления Windows Azure Storage и Hosted Service. Вы также можете найти полный список инструментов управления хранилищем Windows Azure здесь: http://blogs.msdn.com/b/windowsazurestorage/archive/2010/04/17/windows-Azure-storage-explorers.aspx

Надеюсь это поможет.

11
Gaurav Mantri

StorageClient имеет это встроенное в него. Не нужно ничего писать на самом деле:

var account = new CloudStorageAccount(creds, false);

var client = account.CreateCloudBlobClient();

var blob = client.GetBlobReference("/somecontainer/hugefile.Zip");

//1MB seems to be a pretty good all purpose size
client.WriteBlockSizeInBytes = 1024;

//this sets # of parallel uploads for blocks
client.ParallelOperationThreadCount = 4; //normally set to one per CPU core

//this will break blobs up automatically after this size
client.SingleBlobUploadThresholdInBytes = 4096;

blob.UploadFile("somehugefile.Zip");
6
dunnry

Существует новый инструмент OpenSource, предоставленный Microsoft: 

  • Project Deco - кроссплатформенный проводник учетных записей Microsoft Azure. 

Пожалуйста, проверьте эти ссылки: 

4
Ivan Ignatiev - MSFT

Я использую Cyberduck для управления хранилищем больших двоичных объектов.

Это бесплатно и очень прост в использовании. Он работает и с другими облачными решениями.

Я недавно нашел это тоже: CloudXplorer

Надеюсь, поможет.

3
noir

Простой командный файл с использованием утилиты Microsoft AzCopy поможет. Вы можете перетащить файлы в следующий пакетный файл для загрузки в контейнер для хранения больших двоичных объектов:

upload.bat

@ECHO OFF

SET BLOB_URL=https://<<<account name>>>.blob.core.windows.net/<<<container name>>>
SET BLOB_KEY=<<<your access key>>>

:AGAIN
IF "%~1" == "" GOTO DONE

AzCopy /Source:"%~d1%~p1" /Dest:%BLOB_URL% /DestKey:%BLOB_KEY% /Pattern:"%~n1%~x1" /destType:blob

SHIFT
GOTO AGAIN

:DONE
PAUSE

Обратите внимание, что описанный выше метод загружает только один или несколько файлов по отдельности (поскольку указан флаг Pattern) вместо загрузки всего каталога.

2
David Yee

Вы можете использовать Cloud Combine для надежной и быстрой загрузки файлов в хранилище BLOB-объектов Azure.

2
ezolotko

Вы можете загружать большие файлы напрямую в хранилище BLOB-объектов Azure напрямую, используя глагол HTTP PUT, самый большой файл, который я пробовал с приведенным ниже кодом, составляет 4,6 Гб. Вы можете сделать это в C # следующим образом:

// write up to ChunkSize of data to the web request
void WriteToStreamCallback(IAsyncResult asynchronousResult)
{
    var webRequest = (HttpWebRequest)asynchronousResult.AsyncState;
    var requestStream = webRequest.EndGetRequestStream(asynchronousResult);
    var buffer = new Byte[4096];
    int bytesRead;
    var tempTotal = 0;

    File.FileStream.Position = DataSent;

    while ((bytesRead = File.FileStream.Read(buffer, 0, buffer.Length)) != 0
        && tempTotal + bytesRead < CHUNK_SIZE 
        && !File.IsDeleted 
        && File.State != Constants.FileStates.Error)
    {
        requestStream.Write(buffer, 0, bytesRead);
        requestStream.Flush();

        DataSent += bytesRead;
        tempTotal += bytesRead;

        File.UiDispatcher.BeginInvoke(OnProgressChanged);
    }

    requestStream.Close();

    if (!AbortRequested) webRequest.BeginGetResponse(ReadHttpResponseCallback, webRequest);
}

void StartUpload()
{
    var uriBuilder = new UriBuilder(UploadUrl);

    if (UseBlocks)
    {
        // encode the block name and add it to the query string
        CurrentBlockId = Convert.ToBase64String(Encoding.UTF8.GetBytes(Guid.NewGuid().ToString()));
        uriBuilder.Query = uriBuilder.Query.TrimStart('?') + string.Format("&comp=block&blockid={0}", CurrentBlockId);
    }

    // with or without using blocks, we'll make a PUT request with the data
    var webRequest = (HttpWebRequest)WebRequestCreator.ClientHttp.Create(uriBuilder.Uri);
    webRequest.Method = "PUT";
    webRequest.BeginGetRequestStream(WriteToStreamCallback, webRequest);
}

UploadUrl генерируется самим Azure и содержит подпись общего доступа, этот URL-адрес SAS указывает, куда должен быть загружен большой двоичный объект и как долго предоставляется безопасный доступ (доступ на запись в вашем случае). Вы можете создать URL-адрес SAS следующим образом:

readonly CloudBlobClient BlobClient;
readonly CloudBlobContainer BlobContainer;

public UploadService()
{
    // Setup the connection to Windows Azure Storage
    var storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
    BlobClient = storageAccount.CreateCloudBlobClient();

    // Get and create the container
    BlobContainer = BlobClient.GetContainerReference("publicfiles");
}

string JsonSerializeData(string url)
{
    var serializer = new DataContractJsonSerializer(url.GetType());
    var memoryStream = new MemoryStream();

    serializer.WriteObject(memoryStream, url);

    return Encoding.Default.GetString(memoryStream.ToArray());
}

public string GetUploadUrl()
{
    var sasWithIdentifier = BlobContainer.GetSharedAccessSignature(new SharedAccessPolicy
    {
        Permissions = SharedAccessPermissions.Write,
        SharedAccessExpiryTime =
            DateTime.UtcNow.AddMinutes(60)
    });
    return JsonSerializeData(BlobContainer.Uri.AbsoluteUri + "/" + Guid.NewGuid() + sasWithIdentifier);
}

У меня также есть тема на эту тему, где вы можете найти более подробную информацию здесь Как загрузить огромные файлы в BLOB-объект Azure с веб-страницы

1
user152949

Вы можете загружать файлы в BLOB-аккаунт хранилища Azure, используя Командная строка .

Установить Инструменты хранения Microsoft Azure .

А затем загрузить его на свой аккаунт BLOB будет команда CLI:

AzCopy /Source:"filepath" /Dest:bloburl /DestKey:accesskey /destType:blob

Надеюсь, поможет.. :)

1
Sarat Chandra

На новом портале Azure есть опция меню «Редактор» в окне предварительного просмотра в представлении контейнера. Позволяет загружать файл непосредственно в контейнер из пользовательского интерфейса портала

0
Norrec

Прочтите этот пост Загрузка в хранилище Azure где объясняется, как легко загрузить любой файл через PowerShell в хранилище BLOB-объектов Azure.

0
Jeffrey Rosselle

Вы можете использовать инструмент Azcopy для загрузки необходимых файлов в хранилище Azure по умолчанию. Это блочный блоб. Вы можете изменить шаблон в соответствии с вашими требованиями.

Синтаксис

AzCopy /Source :  /Destination /s
0
manchikanti nitesh

Я использовал все инструменты, упомянутые в посте, и все они довольно хорошо работают с блочными объектами. Мой любимый, однако, BlobTransferUtility

По умолчанию BlobTransferUtility блокирует только большие двоичные объекты. Однако, изменив всего 2 строки кода, вы также можете загружать большие страницы. Если вам, как и мне, нужно загрузить образ виртуальной машины, это должен быть блоб страницы.

(для разницы, пожалуйста, см. эту статью MSDN. )

Для загрузки блобов страниц просто измените строки 53 и 62 BlobTransferHelper.cs из

new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob

в

new Microsoft.WindowsAzure.Storage.Blob.CloudPageBlob

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

0
paqogomez