spring 后台项目实现文件流转发 思路

1 用工具包模拟请求

这时候注意 拿到InputStream文件流不要转换其他格式,例如string 你在转回来文件就损坏了。 拿到后复制到一个新的文件流,因为老的要关闭连接,流就没了

 InputStream stream = entity.getContent();
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len;
            while ((len = stream.read(buffer)) > -1) {
                byteArrayOutputStream.write(buffer, 0, len);
            }
            byteArrayOutputStream.flush();
            InputStream newStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());

2 返回前段

在controller层把拿到的input流转化一下  用httpservletresponse 里的outputstream流 接收 前段请求后就会接到值

byte[] buffer = new byte[inputStream.available()];
        inputStream.read(buffer);
        inputStream.close();
        response.reset();



        OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
        toClient.write(buffer);
        toClient.flush();
        toClient.close();

 如果文件过大要先存硬盘 避免OOM

posted @ 2021-07-13 13:58  大哥超帅  阅读(636)  评论(0编辑  收藏  举报