Tôi có đoạn mã sau:Tại sao CloudBlockBlob.DownloadToStream luôn trả về một luồng trống?
public static void UploadStreamToBlob(Stream stream, string containerName, string blobName)
{
CloudStorageAccount storageAccount =
CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference(containerName);
blobContainer.CreateIfNotExists();
blobContainer.SetPermissions(
new BlobContainerPermissions
{
PublicAccess = BlobContainerPublicAccessType.Blob
});
CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(blobName);
long streamlen = stream.Length; <-- This shows 203 bytes
blockBlob.UploadFromStream(stream);
}
và
public static Stream DownloadStreamFromBlob(string containerName, string blobName)
{
CloudStorageAccount storageAccount =
CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference(containerName);
Stream stream = new MemoryStream();
CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(blobName);
if (blockBlob.Exists())
{
blockBlob.DownloadToStream(stream);
long streamlen = stream.Length; <-- This shows 0 bytes
stream.Position = 0;
}
return stream;
}
Tôi đang chạy này trong giả lập Azure, mà tôi đã chỉ vào tôi Sql Server.
Từ những gì tôi có thể nói, có vẻ như UploadFromStream đang gửi dữ liệu chính xác, tuy nhiên, nếu tôi thử và chạy DownloadStreamFromBlob, nó sẽ trả về luồng 0 độ dài. Các blockBlob.Exists đang trả về true, vì vậy tôi giả định nó ở đó. Tôi không thể hiểu tại sao luồng của tôi trống.
Btw, tôi đang vượt qua kiểm tra và kiểm tra cho containerName và blobName trên cả hai cuộc gọi.
Bất kỳ ý tưởng nào?
+1: chỉ giúp tôi ra khỏi một Blob trống tải về kịch bản ... Vì vậy, thường thì đó là những chi tiết đơn giản mà chúng tôi đi lên. –
Đây là vấn đề thường gặp khi làm việc với luồng. Tôi allays thiết lập để IO phương pháp của tôi 'stream.Seek (0, SeekOrigin.Begin);' –