我想直接使用流上传到我的天蓝色本地开发帐户。我为 azure blob 存储创建了一个类。
public class AzureBlob
{
delegate void UploadFinished(IAsyncResult result);
public void uploadFile()
{
//Initial configuration
CloudStorage account = CloudStorageAccount.DevelopmentStorageAccount;
CloudBlobClient client = account.CreateBlobClient();
CloudBlobContainer container = client.GetContainerReference("myfiles");
Stream stream = new MemoryStream();
//Upload to azure
CloudBlob blob = container.GetBlobReference("sample.txt");
UploadFinished uploadFinished = delegate(IAsyncResult result)
{
Console.WriteLine("Upload finished {0} {1}", result.IsCompleted, stream.Position);
};
blob.BeginUploadFromStream(stream, new AsyncCallback(uploadFinished));
//Write to stream
for(int i=0;i<100;i++)
{
for(int j=0;j<50;j++)
{
stream.WriteByte(65);
}
}
stream.Close();
}
}
我面临的第一个问题是我在存储中获取了文件,但它不包含任何数据。即使我在回调中使用 EndOfUploadStream 方法(根据一些stackoverflow答案是一个解决方案)。其次,我将断点放在回调中,我发现回调在我关闭流之前执行了一次,并且程序不断更新流。此时流位置在 913 左右(大部分是随机的)。请帮助我直接通过流异步上传 blob。