Java调用接口获得图片输入流InputStream并返回给前端

效果:

代码:

export const getPhotoById = params => get(`${base}/weda/myLecture/poster/template/getPhotoById?id=${params.id}&isPreview=${params.isPreview}`,{}); // 获取原始的大图

后端

    @Override
    public void getPhotoById(PosterTemplate dto, HttpServletResponse response) throws Exception {
        /省略
 
        InputStream download = minioUtil.download("mpbucket", "sjs/wdjz/hbgl" + SLASH_SUFFIX + preview);
        writeFile(response,download);
    }

  /**
     *  将输入流输出到页面
     */
    public static void writeFile(HttpServletResponse resp, InputStream inputStream) {
        OutputStream out = null;
        try {
            out = resp.getOutputStream();
            int len = 0;
            byte[] b = new byte[1024];
            while ((len = inputStream.read(b)) != -1) {
                out.write(b, 0, len);
            }
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (out != null) {
                    out.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

 

Java中,如果你想根据URL地址从HTTP响应中返回视频流给前端,通常会涉及到Servlet技术以及处理MIME类型(Media Type Identification)。以下是一个简单的示例步骤: 1. 创建一个Servlet:首先,你需要创建一个实现了`javax.servlet.http.HttpServlet`的Java类。这个类将会处理请求和响应。 ```java import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; public class VideoStreamServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String videoUrl = request.getParameter("video_url"); // 获取前端传递过来的视频URL try { serveVideo(response, videoUrl); } catch (Exception e) { // 处理异常,如网络错误等 e.printStackTrace(); } } private void serveVideo(HttpServletResponse response, String url) throws IOException { // 使用URL连接读取视频流 URL videoUrlObj = new URL(url); InputStream inputStream = videoUrlObj.openStream(); // 设置响应头信息,告知浏览器这是一个视频流 response.setContentType("video/mp4"); response.setHeader("Content-Disposition", "attachment; filename=video.mp4"); // 可能需要根据实际文件名调整 // 将输入流传输到HTTP响应 OutputStream outputStream = response.getOutputStream(); byte[] buffer = new byte[1024]; int read; while ((read = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, read); } // 关闭资源 inputStream.close(); outputStream.close(); } } ``` 2. 配置部署:在web.xml配置文件中注册你的Servlet,设置相应的URL模式(如`*.mp4`)以匹配视频请求。 3. 调用前端通过发送GET请求到指定的Servlet路径,携带视频URL作为查询参数,例如:`http://yourserver/video?video_url=http://example.com/video.mp4`
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大大怪~将军

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值