zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Vue 基础篇一
    ES6常用语法
    Django的认证系统
    Django中的Form表单
    AJAX
    Django中的中间件
    Django ORM操作__聚合,分组查询
    Django ORM操作
    Luogu1382 楼房 (线段树 扫描线)
    Luogu2251 质量检测 (ST表)
  • 原文地址:https://www.cnblogs.com/love-zf/p/7067672.html
Copyright © 2011-2022 走看看