Azureストレージアカウントを作成しました。 400 MBの.Zipファイルがあり、後で使用するためにBLOBストレージに入れたい。
コードを書かずにこれを行うにはどうすればよいですか?そのためのインターフェースはありますか?
無料ツール:
Azure Blob Explorerと呼ばれる古いプログラム、または新しいAzure SDKで動作しなくなったものがありました。
これらのうち、私は個人的にCloudBerry Explorerが一番好きです。
最も簡単な方法は、Azure Storage 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 を参照してください。
そのためのツールをお探しの場合は、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
お役に立てれば。
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");
Cyberduck を使用して、BLOBストレージを管理します。
無料で非常に使いやすいです。他のクラウドストレージソリューションでも機能します。
最近、これも見つけました: CloudXplorer
それが役に立てば幸い。
Microsoftが提供する新しいOpenSourceツールがあります。
これらのリンクを確認してください:
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
上記の手法では、ディレクトリ全体をアップロードするのではなく、1つ以上のファイルのみを個別にアップロードします(Pattern
フラグが指定されているため)。
Cloud Combine を使用して、Azure BLOBストレージへの信頼性の高い迅速なファイルアップロードを行うことができます。
HTTP PUT verbを使用して、Azure Blob Storageに大きなファイルを直接アップロードできます。以下のコードで試した最大のファイルは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);
}
私はまた、ここで詳細を見つけることができる主題に関するスレッドを持っています WebページからAzureブロブに巨大なファイルをアップロードする方法
コマンドプロンプトを使用して、AzureストレージアカウントBlobにファイルをアップロードできます。
インストールMicrosoft Azureストレージツール。
そして、それをアカウントblobにアップロードすると、CLIコマンドが実行されます。
AzCopy /Source:"filepath" /Dest:bloburl /DestKey:accesskey /destType:blob
それが役に立てば幸い.. :)
新しいAzureポータルには、コンテナービューのプレビューで[エディター]メニューオプションがあります。ポータルUIからコンテナにファイルを直接アップロードできます
この投稿を確認してください Azure Storageへのアップロード PowerShell経由でAzure Blob Storageにファイルを簡単にアップロードする方法が説明されています。
Azcopyツールを使用して、必要なファイルをAzureのデフォルトストレージにアップロードできます。ブロックblobは要件に応じてパターンを変更できます
構文
AzCopy /Source : /Destination /s
投稿で言及したすべてのツールを使用しましたが、すべてがブロック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を見るためにプログラムを最初に実行するときにヘルプのチェックを外すことです。