首页 > 编程语言 >随笔(十六)『通过图片URL下载图片-Java』

随笔(十六)『通过图片URL下载图片-Java』

时间:2023-04-11 15:45:18浏览次数:36  
标签:Java URL visitPath sos response null bis 图片

public void downloadInvitationImage(Map<String, Object> params, HttpServletResponse response)  {
        String visitPath = (String) params.get("visitPath");  // 公网url
       
        ServletOutputStream sos = null;
        InputStream is = null;
        BufferedInputStream bis = null;
        try {
            URL url = new URL(visitPath); // 构造url
            HttpURLConnection connection = (HttpURLConnection)url.openConnection(); // 开启连接
            connection.setRequestMethod("GET"); // 设置get请求
            is = connection.getInputStream(); // 获取输入流
            bis = new BufferedInputStream(is); // 创建带缓存的输入流
            byte[] bytes = new byte[8 * 1024]; // 8kb的字节数组,每次最多读取8kb数据
            int len = 0;

            String suffix = visitPath.substring(visitPath.lastIndexOf(".")); // 图片后缀

            String fileName = "图片名称";
            sos = response.getOutputStream(); // 获取响应输出流
            response.setCharacterEncoding("UTF-8");
            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition",
                    "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8") + suffix);

            while ((len = bis.read(bytes)) != -1) { // 读取到数据就写出去
                sos.write(bytes, 0, len);
            }
        }catch (IOException e) {
            throw new RenException("下载出错");
        }finally {
            if (sos != null) {
                try {
                    sos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bis != null) {
                try {
                    bis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

标签:Java,URL,visitPath,sos,response,null,bis,图片
From: https://www.cnblogs.com/xiaonuanxin/p/17306461.html

相关文章

  • java环境变量
    右键我的电脑-属性-高级系统设置-环境变量  在箭头标识那里进行环境变量点击新建-变量名:JAVA_HOME  变量值:自己安装jdk的路径如(D:\program\ljyjdk8) 最后找到Path这行-编辑-新建 新建值为%JAVA_HOME%\bin......
  • wangEditor粘贴图片自动上传到服务器(Java版)
    ​ 这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下)<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@     page contentType="text/html;cha......
  • 重学Java设计模式-行为型模式-责任链模式
    重学Java设计模式-行为型模式-责任链模式内容摘自:https://bugstack.cn/md/develop/design-pattern/2020-06-18-重学Java设计模式《实战责任链模式》.html#重学-java-设计模式-实战责任链模式「模拟618电商大促期间-项目上线流程多级负责人审批场景」责任链模式介绍图片来自......
  • java Optional使用
    1.Optional.of()或者Optional.ofNullable()创建Optional对象,差别在于of不允许参数是null,而ofNullable则无限制。1//参数不能是null2Optional<Integer>optional1=Optional.of(1);34//参数可以是null5Optional<Integer>optional2=Optional.ofNullable(null);2......
  • Java 日期
    string和Date的相互转换//string与Date的相互转换用//StringtoDateDateFormatformat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");StringdateTest="2023-4-1114:30:00";Dateparse=null;try{......
  • 摇杆,3D、2D图片英雄对应位置,滚轮放大缩小
    usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.EventSystems;usingUnityEngine.UI;///<summary>///英雄移动///</summary>publicclassyd:MonoBehaviour,IDragHandler,IEndDragHandler{publ......
  • 本地kafka安装以及使用java作为客户端
    1.使用windows下载kafka地址:https://kafka.apache.org/    下载安装后,使用命令行启动: 进入kafka所在目录,执行命令:   #启动zookeeper命令: bin\windows\zookeeper-server-start.bat.\config\zookeeper.properties#启动kafka命令bin\windows\kafka-server......
  • odoo中用javascript调用model中定义好的方法
    odoo中如果前端界面要调用后台model中写好的方法,很简单。使用do_action即可,比如要调用改res.users的默认语言后执行的方法 odoo.define('switch_language.SwitchLanguageMenu',function(require){"usestrict";varModel=require('web.Model');varse......
  • Glide 加载圆角图片 CenterCrop
    /***加载圆角图片。并且充满屏幕*/funloadCropImageRadius(iv:ImageView,bkgColor:String?,radius:Int,path:String){valbitMap=ViewTool.createBmp4Rgb(bkgColor)valplaceholderDrawable=BitmapDrawable(iv.resources,bitMap......
  • JavaSE05数组
    1.数组概念:指的是一种容器,可以同来存储同种数据类型的多个值。但是数组容器在存储数据的时候,需要结合隐式转换考虑。比如:定义了一个int类型的数组。那么boolean。double类型的数据是不能存到这个数组中的,但是byte类型,short类型,int类型的数据是可以存到这个数组里面的。int类型......