通过url下载图片到本地

/**
 * 文件或文件夹不存在则创建
 * @param dir 文件夹
 * @param filepath 文件名
 */
public static void createDirFile(String dir){
   File file = new File(dir);
   if(!file.exists()){
      file.mkdirs();
   }
}
/**
 * @param dir 子目录
 * @param fileUrl 图片链接
 * @return
 */
public static String uploadQianURL(String dir,String fileUrl) {
   //获取文件名,文件名实际上在URL中可以找到
   String fileName = fileUrl.substring(fileUrl.lastIndexOf("/")+1,fileUrl.length());
   //这里服务器上要将此图保存的路径
   String savePath = "G:/upload/";
   if (!StringUtils.isEmpty(dir)){
      savePath = savePath +dir+"/";
   }
   createDirFile(savePath);
   try {
      /*将网络资源地址传给,即赋值给url*/
      URL url = new URL(fileUrl);
      /*此为联系获得网络资源的固定格式用法,以便后面的in变量获得url截取网络资源的输入流*/
      HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
      //服务器的安全设置不接受Java程序作为客户端访问,解决方案是设置客户端的User Agent
      connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
      DataInputStream in = new DataInputStream(connection.getInputStream());
      /*此处也可用BufferedInputStream与BufferedOutputStream*/
      DataOutputStream out = new DataOutputStream(new FileOutputStream(savePath+fileName));
      /*将参数savePath,即将截取的图片的存储在本地地址赋值给out输出流所指定的地址*/
      byte[] buffer = new byte[4096];
      int count = 0;
      /*将输入流以字节的形式读取并写入buffer中*/
      while ((count = in.read(buffer)) > 0) {
         out.write(buffer, 0, count);
      }
      out.close();/*后面三行为关闭输入输出流以及网络资源的固定格式*/
      in.close();
      connection.disconnect();
      //返回内容是保存后的完整的URL
      /*网络资源截取并存储本地成功返回true*/
      return savePath+fileName;
   } catch (Exception e) {
      System.out.println(e + fileUrl + savePath);
      return null;
   }
}

猜你喜欢

转载自blog.csdn.net/Java_Mrsun/article/details/85046988