InputStream只能讀取一次的解決辦法 C# byte[] 和Stream轉換
阿新 • • 發佈:2017-06-23
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轉換