Подтвердить что ты не робот

Как загрузить какой-либо файл в хранилище Azure blob без написания моей собственной программы?

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

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

4b9b3361

Ответ 1

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

  • Visual Studio 2010 - установите средства Azure и вы можете найти капли в Server Explorer
  • Cloud Berry Lab CloudBerry Explorer для хранения Azure Blob
  • ClumpsyLeaf CloudXplorer
  • Azure Storage Explorer из CodePlex (попробуйте бета-версию версии 4)

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

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

Ответ 2

Самый простой способ - использовать Azure Storage PowerShell. Он предоставил множество команд для управления контейнером хранения /blob/table/queue.

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

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

Подробнее см. http://msdn.microsoft.com/en-us/library/dn408487.aspx.

Ответ 3

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

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

Ответ 4

В 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");

Ответ 5

Я использую Cyberduck для управления моим хранилищем памяти.

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

Недавно я нашел и этот: CloudXplorer

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

Ответ 6

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

  • Project Deco - кроссплатформенный Microsoft Azure Storage Account Explorer.

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

Ответ 7

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

Ответ 8

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

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) вместо загрузки всего каталога.

Ответ 9

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

// 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 указывает, где будет загружаться blob, и сколько времени предоставляется доступ к безопасности (доступ на запись в вашем случае). Вы можете создать 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);
}

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

Ответ 10

Вы можете загружать файлы в Azure Storage Blob с помощью Командная строка.

Установите Средства хранения Microsoft Azure.

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

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

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

Ответ 11

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

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

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

Чтобы загрузить страницы, вы просто меняете строки 53 и 62 из BlobTransferHelper.cs из

new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob

к

new Microsoft.WindowsAzure.Storage.Blob.CloudPageBlob

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

Ответ 12

Отметьте это сообщение Загрузка в Azure Storage, где объясняется, как легко загрузить любой файл через PowerShell в Azure Blob Storage.

Ответ 13

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

Синтаксис

AzCopy /Source :  /Destination /s

Ответ 14

Попробуйте Blob Service API

http://msdn.microsoft.com/en-us/library/dd135733.aspx

Однако 400mb - это большой файл, и я не уверен, что один вызов API будет иметь дело с чем-то такого размера, вам может понадобиться разбить его и восстановить с помощью настраиваемого кода.