46

我创建了一个 Azure 存储帐户。我有一个 400 兆字节的 .zip 文件,我想将其放入 blob 存储以供以后使用。

我怎么能不写代码做到这一点?有什么接口吗?

4

15 回答 15

37

免费工具:

  1. Visual Studio 2010 -- 安装 Azure 工具,您可以在服务器资源管理器中找到 blob
  2. Cloud Berry Lab 用于 Azure Blob 存储的 CloudBerry Explorer
  3. ClumpsyLeaf CloudXplorer
  4. CodePlex 的 Azure 存储资源管理器(试用版本 4 测试版)

有一个名为 Azure Blob Explorer 的旧程序或不再适用于新 Azure SDK 的程序。

其中,我个人最喜欢 CloudBerry Explorer。

于 2011-07-06T02:10:10.890 回答
18

最简单的方法是使用 Azure 存储 PowerShell。它提供了许多命令来管理您的存储容器/blob/table/queue。

对于您提到的情况,您可以使用Set-AzureStorageBlobContent可以将本地文件作为块 blob 或页面 blob 上传到 azure 存储。

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

详情请参考http://msdn.microsoft.com/en-us/library/dn408487.aspx

于 2013-09-03T07:11:27.083 回答
12

如果您正在寻找这样做的工具,我建议您看看我们的工具 Cloud Storage Studio ( http://www.cerebrata.com/Products/CloudStorageStudio )。它是用于管理 Windows Azure 存储和托管服务的商业工具。您还可以在此处找到 Windows Azure 存储管理工具的完整列表:http: //blogs.msdn.com/b/windowsazurestorage/archive/2010/04/17/windows-azure-storage-explorers.aspx

希望这可以帮助。

于 2011-07-05T14:35:56.197 回答
6

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");
于 2011-07-05T17:22:43.333 回答
4

我使用Cyber​​duck来管理我的 blob 存储。

它是免费的并且非常易于使用。它也适用于其他云存储解决方案。

我最近也发现了这个:CloudXplorer

希望能帮助到你。

于 2011-09-29T17:39:31.773 回答
4

微软提供了一个新的开源工具:

  • Project Deco - 跨平台 Microsoft Azure 存储帐户资源管理器。

请检查这些链接:

于 2016-03-02T10:46:59.970 回答
2

您可以使用Cloud Combine将文件可靠快速地上传到 Azure Blob 存储。

于 2013-04-11T12:50:09.147 回答
2

可以使用命令提示符将文件上传到 Azure 存储帐户 Blob 。

安装Microsoft Azure 存储工具

然后将其上传到您的帐户 blob 将 CLI 命令:

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

希望能帮助到你.. :)

于 2017-03-23T15:36:28.073 回答
2

使用 MicrosoftAzCopy实用程序的简单批处理文件就可以解决问题。您可以将文件拖放到以下批处理文件中以上传到您的 Blob 存储容器中:

上传.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指定了标志),而不是上传整个目录。

于 2016-06-09T10:07:30.067 回答
1

您可以使用 HTTP PUT 动词直接将大文件直接上传到 Azure Blob 存储,我用下面的代码尝试过的最大文件是 4.6 Gb。您可以像这样在 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 本身生成并包含一个共享访问签名,此 SAS URL 说明将 blob 上传到何处以及给予安全访问(在您的情况下为写访问)多长时间。您可以像这样生成 SAS URL:

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);
}

我也有一个关于该主题的主题,您可以在此处找到更多信息How to upload large files to the Azure blob from a web page

于 2011-07-08T13:41:15.863 回答
1

在容器视图中时,新的 Azure 门户在预览中具有“编辑器”菜单选项。允许您从 Portal UI 将文件直接上传到容器

于 2018-05-16T18:26:41.333 回答
0

我已经使用了帖子中提到的所有工具,并且都可以很好地处理块 blob。然而,我最喜欢的是BlobTransferUtility

默认情况下,BlobTransferUtility 只阻止 blob。但是,只需更改 2 行代码,您也可以上传页面 blob。如果您像我一样需要上传虚拟机映像,则它必须是页面 blob。

(不同之处请参见这篇 MSDN 文章。

要上传页面 blob,只需将 BlobTransferHelper.cs 的第 53 和 62 行从

new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob

new Microsoft.WindowsAzure.Storage.Blob.CloudPageBlob

关于此应用程序唯一需要了解的另一件事是在您第一次运行程序以查看实际 UI 时取消选中帮助。

于 2013-07-16T22:03:14.303 回答
0

查看这篇文章上传到 Azure 存储,其中解释了如何通过 PowerShell 轻松地将任何文件上传到 Azure Blob 存储。

于 2015-04-01T14:59:17.247 回答
0

您可以使用 Azcopy 工具将所需的文件上传到 azure 默认存储是块 blob 您可以根据您的要求更改模式

句法

AzCopy /Source :  /Destination /s
于 2017-04-20T06:33:02.323 回答
-1

试试Blob Service API

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

但是,400mb 是一个文件,我不确定单个 API 调用是否可以处理这种大小的内容,您可能需要拆分它并使用自定义代码重新构建。

于 2011-07-05T14:11:46.727 回答