将网络图片下载到tomcat上

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.UUID;

/**
   * 将网络图片下载到tomcat上
   * 
   * @param imgURL图片地址。
   *          例如:http://***.com/271025191524034.jpg
   * @return
   */
  public static String downloadImgUtil(String imgURL) {
    try {
      // new一个URL对象
      URL url = new URL(imgURL);
      // 打开链接
      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
      // 设置请求方式为"GET"
      conn.setRequestMethod("GET");
      // 超时响应时间为5秒
      conn.setConnectTimeout(5 * 1000);
      // 通过输入流获取图片数据
      InputStream inStream = conn.getInputStream();
      // 得到图片的二进制数据,以二进制封装得到数据,具有通用性
      byte[] data = readInputStream(inStream);
      // new一个文件对象用来保存图片,默认保存当前工程根目录
      // 获取项目所在路径
      String mysqlPath = Thread.currentThread().getContextClassLoader()
          .getResource("").toString();

      // 文件夹  你自己的文件夹
      String fileUrl = "static/pic_file";

      // 判断操作系统  DBUtil.getOfficeHome() 在判断当前操作系统工具类中
     if ("true".equals(DBUtil.getOfficeHome())) {
        // linux
        String[] mysqlArr = mysqlPath.split(":");
        mysqlPath = mysqlArr[1];

        fileUrl = mysqlPath + fileUrl;
      } else if ("false".equals(DBUtil.getOfficeHome())) {
        // windows
        mysqlPath = mysqlPath.substring(6, mysqlPath.length());

        fileUrl = mysqlPath + fileUrl;
      }
      File dir = new File(fileUrl);
      if (!dir.exists()) {
        dir.mkdir();
      }
      String type = getType(imgURL);

      StringBuffer realName = new StringBuffer(UUID.randomUUID().toString());
      realName.append(type);
      String fileName = realName.toString();
      File imageFile = new File(fileUrl + "/" + fileName);
      // 创建输出流
      FileOutputStream outStream = new FileOutputStream(imageFile);
      // 写入数据
      outStream.write(data);
      // 关闭输出流
      outStream.close();
      return fileUrl + "/" + fileName;
    } catch (Exception e) {
      // TODO: handle exception
    }
    return "";
  }

  public static byte[] readInputStream(InputStream inStream) throws Exception {
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    // 创建一个Buffer字符串
    byte[] buffer = new byte[1024];
    // 每次读取的字符串长度,如果为-1,代表全部读取完毕
    int len = 0;
    // 使用一个输入流从buffer里把数据读取出来
    while ((len = inStream.read(buffer)) != -1) {
      // 用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度
      outStream.write(buffer, 0, len);
    }
    // 关闭输入流
    inStream.close();
    // 把outStream里的数据写入内存
    return outStream.toByteArray();
  }

  public static String getType(String s) {
    String[] ss = s.split("\\.");// 表示用.去切割字符串
    return "." + ss[ss.length - 1];// 用.连接最后一个字符串
  }

  public static String getTypeNoPoint(String s) {
    String[] ss = s.split("\\.");// 表示用.去切割字符串
    return ss[ss.length - 1];// 用.连接最后一个字符串
  }

  public static boolean deleteFile(String sPath) {
    boolean flag = false;
    File file = new File(sPath);
    // 路径为文件且不为空则进行删除
    if (file.isFile() && file.exists()) {
      file.delete();
      flag = true;
    }
    return flag;
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JAVA代码搬运工

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

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

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

打赏作者

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

抵扣说明:

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

余额充值