2016-03-30 10 views
3

私はAzureブロブストレージにファイルをアップロードしようとした場合、ファイルの長さが0に等しいクラスMemoryStreamを使用するとAzure UploadFromStreamが動作しないのはなぜですか(動作は同じですが長さは0になります)?

public class TextCorpusFile 
{ 
    public int Id {get; set;} 
    public string FileType {get; set;} 
    public MemoryStream File {get; set;} 
} 

を持っている(ファイルが作成されましたが、長さが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); 

} 

しかし、私はバイトでファイルを送信する場合、それがうまく機能してUploadFromStream(ストリームソースと私は確信しているので、長さは(それがこのように動作しますなぜ私は理解できない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); 
} 

ではありませんそのMemoryStream:Stream

説明できますか?

答えて

6

診断コードは表示されませんが、MemoryStream.Positionが最後です。これにより、読み取りによって0バイトが返されます。

0

私は同じ問題があったので、UploadFromStreamを呼び出す前にメモリストリームの位置を0に設定してください。

関連する問題