1. 程式人生 > >InputStream只能讀取一次的解決辦法 C# byte[] 和Stream轉換

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

eof nbsp pos 讀取 處理 搜索 post ... 還要

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

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