码迷,mamicode.com
首页 > Windows程序 > 详细

InputStream只能读取一次的解决办法 C# byte[] 和Stream转换

时间:2017-06-22 23:54:28      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:数组   pos   决定   exce   bytes   cep   mem   操作   前台   

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转换

标签:数组   pos   决定   exce   bytes   cep   mem   操作   前台   

原文地址:http://www.cnblogs.com/love-zf/p/7067672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!