如果我使用 MemoryStream,为什么 Azure UploadFromStream 不起作用(它起作用但长度等于 0)?
Why Azure UploadFromStream does not work if I use MemoryStream (It works but length equals 0)?
我有一个class
public class TextCorpusFile
{
public int Id {get; set;}
public string FileType {get; set;}
public MemoryStream File {get; set;}
}
如果我尝试将文件上传到 Azure Blob 存储,文件的长度等于 0。(文件已创建,但长度为 0)
public void SendTextCorpusFileData(TextCorpusFile textCorpusFile)
{
//get container by default
CloudBlobContainer textCorpusContainer =
ReturnTextCorpusFileContainer();
CloudBlockBlob blockBlob = textCorpusContainer.GetBlockBlobReference(textCorpusFile.Id + POINT + textCorpusFile.FileType);
blockBlob.UploadFromStream(textCorpusFile.File);
}
但是如果我按字节发送文件,效果很好,长度不是0。
public void SendTextCorpusFileData(TextCorpusFile textCorpusFile)
{
//get by default
CloudBlobContainer textCorpusContainer =
ReturnTextCorpusFileContainer();
CloudBlockBlob blockBlob = textCorpusContainer.GetBlockBlobReference(textCorpusFile.Id + POINT + textCorpusFile.FileType);
blockBlob.UploadFromByteArray(textCorpusFile.File.ToArray(),
0,
(int)textCorpusFile.File.Length);
}
为什么它会这样工作我无法理解(因为 UploadFromStream(Stream 源并且我确定 MemoryStream : Stream)
你能解释一下吗?
虽然显示了相关代码的 none 我诊断:MemoryStream.Position
在最后。这会导致读取 return 0
字节。
我有同样的问题,在调用 UploadFromStream 之前将内存流的位置设置为 0。
我有一个class
public class TextCorpusFile
{
public int Id {get; set;}
public string FileType {get; set;}
public MemoryStream File {get; set;}
}
如果我尝试将文件上传到 Azure Blob 存储,文件的长度等于 0。(文件已创建,但长度为 0)
public void SendTextCorpusFileData(TextCorpusFile textCorpusFile)
{
//get container by default
CloudBlobContainer textCorpusContainer =
ReturnTextCorpusFileContainer();
CloudBlockBlob blockBlob = textCorpusContainer.GetBlockBlobReference(textCorpusFile.Id + POINT + textCorpusFile.FileType);
blockBlob.UploadFromStream(textCorpusFile.File);
}
但是如果我按字节发送文件,效果很好,长度不是0。
public void SendTextCorpusFileData(TextCorpusFile textCorpusFile)
{
//get by default
CloudBlobContainer textCorpusContainer =
ReturnTextCorpusFileContainer();
CloudBlockBlob blockBlob = textCorpusContainer.GetBlockBlobReference(textCorpusFile.Id + POINT + textCorpusFile.FileType);
blockBlob.UploadFromByteArray(textCorpusFile.File.ToArray(),
0,
(int)textCorpusFile.File.Length);
}
为什么它会这样工作我无法理解(因为 UploadFromStream(Stream 源并且我确定 MemoryStream : Stream)
你能解释一下吗?
虽然显示了相关代码的 none 我诊断:MemoryStream.Position
在最后。这会导致读取 return 0
字节。
我有同样的问题,在调用 UploadFromStream 之前将内存流的位置设置为 0。