当前位置: 首页 > 编程语言 > C#

直接从stream上传到azure异步分享

时间:2023-04-11 01:00:31 C#

直接从stream上传到azure异步我想使用stream直接上传到我的azure本地开发账号。我已经为azureblob存储创建了一个类。公共类AzureBlob{委托voidUploadFinished(IAsyncResult结果);publicvoiduploadFile(){//初始配置CloudStorageaccount=CloudStorageAccount.开发存储账户;CloudBlobClient客户端=帐户。创建BlobClient();CloudBlobContainer容器文件=client.GetContainer("Streamstream=newMemoryStream();//上传到azureCloudBlobblob=container.GetBlobReference("sample.txt");UploadFinisheduploadFinished=delegate(IAsyncResultresult){Console.WriteLine("上传完成{0}{1}",result.IsCompleted,stream.Position);};blob.BeginUploadFromStream(stream,newAsyncCallback(uploadFinished));//写入流for(inti=0;i<100;i++){for(intj=0;j<50;j++){stream.WriteByte(65);}}stream.Close();}}我面临的第一个问题是我正在存储文件,但它不包含任何数据.即使我在回调中使用了EndOfUploadStream方法(根据一些stackoverflow的回答是一个解决方案)。其次,我在callback下了断点,发现callback执行了一次,然后就关闭了stream,程序一直在更新stream。此时,流位置大约是913(大部分是随机的)。请帮助我直接通过流上传blob。smarx的好答案!此外,将stream.Close()移动到回调中。委托voidBeginUploadFinished(IAsyncResult结果);publicvoidUploadFile(){//初始配置varaccount=CloudStorageAccount.DevelopmentStorageAccount;varclient=account.CreateCloudBlobClient();varcontainer=client.GetContainerReference("myfiles");流stream=MemoryStream();变种状态=新对象{};//上传到天蓝色varblob=container.GetBlobReference("test.txt");BeginUploadFinishedbeginUploadFinished=委托(IAsyncResult结果){blob.EndUploadFromStream(结果);("EndUploadFromStream","信息");stream.Close();stream.Dispose();};//写入流Trace.WriteLine("WritingStream","Information");for(vari=0;i看起来你有竞争条件。你在实际将内容放入其中之前启动上传流。你可能想要这样的:以上是C#学习教程:从流直接上传到azure异步分享的全部内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注---Streamstream=newMemoryStream();//写入流for(inti=0;i<100;i++){for(intj=0;j<50;j++){stream.WriteByte(65);}}流.SetPosition(0);//本文摘自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: