你可以找到這個鏈接的文件上傳學習到有用的蔚藍的二進制大對象塊:
http://wely-lau.net/2012/02/26/uploading-big-files-in-windows-azure-blob-storage-with-putlistblock/
我在這裏複製的代碼刪除外部依賴:
protected void btnUpload_Click(object sender, EventArgs e)
{
CloudBlobClient blobClient;
var storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
container.CreateIfNotExist();
var permission = container.GetPermissions();
permission.PublicAccess = BlobContainerPublicAccessType.Container;
container.SetPermissions(permission);
string name = fu.FileName;
CloudBlockBlob blob = container.GetBlockBlobReference(name);
blob.UploadFromStream(fu.FileContent);
int maxSize = 1 * 1024 * 1024; // 4 MB
if (fu.PostedFile.ContentLength > maxSize)
{
byte[] data = fu.FileBytes;
int id = 0;
int byteslength = data.Length;
int bytesread = 0;
int index = 0;
List<string> blocklist = new List<string>();
int numBytesPerChunk = 250 * 1024; //250KB per block
do
{
byte[] buffer = new byte[numBytesPerChunk];
int limit = index + numBytesPerChunk;
for (int loops = 0; index < limit; index++)
{
buffer[loops] = data[index];
loops++;
}
bytesread = index;
string blockIdBase64 = Convert.ToBase64String(System.BitConverter.GetBytes(id));
blob.PutBlock(blockIdBase64, new MemoryStream(buffer, true), null);
blocklist.Add(blockIdBase64);
id++;
} while (byteslength - bytesread > numBytesPerChunk);
int final = byteslength - bytesread;
byte[] finalbuffer = new byte[final];
for (int loops = 0; index < byteslength; index++)
{
finalbuffer[loops] = data[index];
loops++;
}
string blockId = Convert.ToBase64String(System.BitConverter.GetBytes(id));
blob.PutBlock(blockId, new MemoryStream(finalbuffer, true), null);
blocklist.Add(blockId);
blob.PutBlockList(blocklist);
}
else
blob.UploadFromStream(fu.FileContent);
}
您還可以找到here.
Sandrino嗨,我沒有得到如何通過URI作爲BlolREquest.PutBlock史蒂夫·馬克思對大文件上傳(例如)開發的Silverlight控件。 –
更新了我的答案。 –
嗨Sandrino,上面提到的鏈接調用BlobRequest.Put中的代碼,其中用戶想要一次性上傳內容到blob。我正在尋找與BlobRequest.PutBlock塊上傳塊。 –