springMVC使用MultipartFile上传文件报错

今天上传图片发现的问题,分享一波

 

springmvc使用MultipartFile上传文件报错

 

     //因为http post文件流只可以接收读取一次,传输完毕则关闭流。

        //方法一
        //复制原始流
        InputStream inputStream = file.getInputStream();     // InputStream 多个流...... = file.getInputStream();

        //创建接收流对象
        OutputStream outputStream = new FileOutputStream("需要写入文件的路径");

        // 写入文件
        inputStream.transferTo(outputStream);

        //方法二
        //缓冲流
        //BufferedOutputStream也内置了一个缓冲区(数组),
        //程序向流中写出字节时, 不会直接写到文件, 先写到缓冲区中,
        //直到缓冲区写满, BufferedOutputStream才会把缓冲区中的数据一次性写到文件里。

        BufferedInputStream bis = new BufferedInputStream(file.getInputStream());

        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("需要写入文件的路径"));

        int b;
        while ((b = bis.read()) != -1) {
            bos.write(b);
        }
        bis.transferTo(bos);

        bis.close();
        
        bos.close();

        //补充知识
        
        //flush和close方法的区别
        //flush()方法
        //用来刷新缓冲区的,刷新后可以再次写出,同一文件这样就可以多次写入

        //close()方法
        //用来关闭流释放资源的,如果是带缓冲区的流对象的close()方法,不但会关闭流,还会再关闭流之前刷新缓冲区,关闭后不能再写出

        //注:带缓冲区的流对象若没有关闭流,则可能会导致缓冲区中的部分数据未刷新到文件中,导致写出数据丢失
posted @ 2022-03-21 18:08  依笑  阅读(430)  评论(0编辑  收藏  举报