美文网首页web
通过url从图片服务器下载图片到浏览器(图片下载)下载图片而不是

通过url从图片服务器下载图片到浏览器(图片下载)下载图片而不是

作者: 如沐春风_da89 | 来源:发表于2018-07-06 14:11 被阅读16次
    一、需求:平时写图片下载功能,只需要前台页面写download标签就可以实现图片的下载,本次项目遇到的问题是,由于搭建了图片服务器,请求图片URL的时候获取不到请求头,浏览器无法识别图片是文件,导致点击下载,浏览器会打开图片.
    二、解决:既然浏览器获取不到请求头,考虑到的最简单的解决方式是通过后台下载,向图片服务器发送请求头.

    考虑到下载图片使用频繁,所以把下载图片封装为通用方法,代码如下:

    实现步骤:
    1.前台向后台发送图片url
    2.通过url获取图片流
    3.设置输出头
    4.把图片输出到浏览器(不是写死图片地址)

    /**
         * 图片下载
         * @param fileUrl
         * @param response
         */
        @ApiOperation(value = "|uploadQianURL|图片下载")
        @GetMapping("/uploadQianURL")
        public void  uploadQianURL(String fileUrl,HttpServletResponse response) {
    
            fileUrl = fileUrl.replace("\\", "/");
            //获取文件名,文件名实际上在URL中可以找到
            String[] strs=fileUrl.split("/");
            String fileName = strs[strs.length - 1].toString();
            try {
                URL url = new URL(fileUrl);/*将网络资源地址传给,即赋值给url*/
                /*此为联系获得网络资源的固定格式用法,以便后面的in变量获得url截取网络资源的输入流*/
                HttpURLConnection connection = (HttpURLConnection)url.openConnection();
                DataInputStream in = new DataInputStream(connection.getInputStream());
                ServletOutputStream out=response.getOutputStream();
                response.setContentType("multipart/form-data");
                //获取当前超链接中文件的名字
                response.addHeader("Content-Disposition","attachment; filename="+ new String(fileName.getBytes("GB2312"), "ISO8859-1"));
    
                ByteArrayOutputStream output = new ByteArrayOutputStream();
    
                byte[] buffer = new byte[1024];
                int length;
    
                while ((length = in.read(buffer)) > 0) {
                    output.write(buffer, 0, length);
                }
                byte[] context=output.toByteArray();
                out.write(output.toByteArray());
                in.close();
                out.close();
                connection.disconnect();
            } catch (Exception e) {
    
    
            }
        }
    

    相关文章

      网友评论

        本文标题:通过url从图片服务器下载图片到浏览器(图片下载)下载图片而不是

        本文链接:https://www.haomeiwen.com/subject/iggvuftx.html