C# Is流读取可以生成并向blob存储发送Null
我对文件使用流:内存流、流读取或文件流,例如C# Is流读取可以生成并向blob存储发送Null,c#,azure,azure-storage,azure-web-app-service,azure-storage-blobs,C#,Azure,Azure Storage,Azure Web App Service,Azure Storage Blobs,我对文件使用流:内存流、流读取或文件流,例如 byte[] buff = System.IO.File.ReadAllBytes(open.FileName); System.IO.MemoryStream ms = new System.IO.MemoryStream(buff); 我想将它发送到blob存储,此时我的blob是空的,是因为逐流读取文件,还是因为它引用了其他问题,例如blob或CloudStorageAccount连接字符串上的未配置 在开始从该流上载到blob之前,请确保您
byte[] buff = System.IO.File.ReadAllBytes(open.FileName);
System.IO.MemoryStream ms = new System.IO.MemoryStream(buff);
我想将它发送到blob存储,此时我的blob是空的,是因为逐流读取文件,还是因为它引用了其他问题,例如blob或CloudStorageAccount连接字符串上的未配置 在开始从该流上载到blob之前,请确保您的流位于
0
。如上述评论所述,您可以尝试以下方法:
ms.Position = 0
或
在开始从该流上载到blob之前,请确保您的流位于
0
。如上述评论所述,您可以尝试以下方法:
ms.Position = 0
或
只需使用下面的代码。不需要转换内存流,您可以使用blob.UploadfromStream方法将流传递到blob存储
StorageCredentials creds = new StorageCredentials(
ConfigurationManager.AppSettings["accountName"],
ConfigurationManager.AppSettings["accountKey"]
);
CloudStorageAccount account = new CloudStorageAccount(creds, useHttps: true);
CloudBlobClient client = account.CreateCloudBlobClient();
CloudBlobContainer contain = client.GetContainerReference("your container name");
contain.CreateIfNotExists();
CloudBlockBlob blob = contain.GetBlockBlobReference("your blob name");
using (var stream = System.IO.File.OpenRead("your file"))
blob.UploadFromStream(stream);
只需使用下面的代码。不需要转换内存流,您可以使用blob.UploadfromStream方法将流传递到blob存储
StorageCredentials creds = new StorageCredentials(
ConfigurationManager.AppSettings["accountName"],
ConfigurationManager.AppSettings["accountKey"]
);
CloudStorageAccount account = new CloudStorageAccount(creds, useHttps: true);
CloudBlobClient client = account.CreateCloudBlobClient();
CloudBlobContainer contain = client.GetContainerReference("your container name");
contain.CreateIfNotExists();
CloudBlockBlob blob = contain.GetBlockBlobReference("your blob name");
using (var stream = System.IO.File.OpenRead("your file"))
blob.UploadFromStream(stream);
对不起,但是。。。你的问题到底是什么?我不明白。你的流是否可能被定位在最后?在调用上载方法之前,请尝试执行
ms.Position=0
。HTH.@DavidMakogon一次当我想在blob中上载时,我试图调用流读取;另一次当我想在blob存储中存储之前对文件进行一些修改时,我试图调用流读取。我没有内容,我想这是因为调用流阅读两次。我必须在上传文件之前写一行代码,以便将文件开头的指针向后移动并定位到zero@GauravMantri非常感谢,我认为你说的完全正确。在某些情况下,我需要调用流读取两次,并且在将文件上载到存储器上之前必须移动指针的起始位置:file.InputStream.Seek(0,SeekOrigin.Begin);或memorystream.Position=0抱歉,但是。。。你的问题到底是什么?我不明白。你的流是否可能被定位在最后?在调用上载方法之前,请尝试执行ms.Position=0
。HTH.@DavidMakogon一次当我想在blob中上载时,我试图调用流读取;另一次当我想在blob存储中存储之前对文件进行一些修改时,我试图调用流读取。我没有内容,我想这是因为调用流阅读两次。我必须在上传文件之前写一行代码,以便将文件开头的指针向后移动并定位到zero@GauravMantri非常感谢,我认为你说的完全正确。在某些情况下,我需要调用流读取两次,并且在将文件上载到存储器上之前必须移动指针的起始位置:file.InputStream.Seek(0,SeekOrigin.Begin);或memorystream.Position=0