InputStream只能讀取一次的解決辦法 C# byte[] 和Stream轉換


x

情景--->>>

導入文件的時候,前台傳過來一個文件,

后台接到: 

HttpPostedFileBase file = Request.Files[0];
由於對這個文件后台處理比較多,讀取里面的內容,還要將其轉換為Stream寫入一個新的文件...
以前的做法是↓
新建一個MemoryStream實例進行操作>>>

Stream stream = new MemoryStream();
file.InputStream.Seek(0, SeekOrigin.Begin);
file.InputStream.CopyTo(stream);

x

今天我還是這么做,報錯了...
決定找個一勞永逸的方法,
搜索出來的都是Java的解決方案...
不過中心思想把握了:"但第一次讀取InputStream對象后,第二次再讀取時可能已經到Stream的結尾了(EOFException)或者Stream已經close掉了。"
可以放到byte數組里面,想用的話,直接轉換為文件流就行了!!!

x現在解決方案x就是想講Stream轉換為byte[]就行了>>>

Stream stream = file.InputStream;//new MemoryStream();
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
//設置當前流的位置為流的開始
stream.Seek(0, SeekOrigin.Begin);

//將bytes轉換為流
//Stream newStream = new MemoryStream(bytes);

完美...至少現在沒報錯...哈哈...

 

 

x


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM