工具类(网络文件下载到本地)
工具类(网络文件下载到本地)
package com.cpiaoju.constructionbank.util; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.ccb.sdk.CCBSDK; import com.cpiaoju.constructionbank.constant.SysInstance; import com.cpiaoju.constructionbank.entity.FileInfo; import com.cpiaoju.constructionbank.exception.SysException; import lombok.extern.slf4j.Slf4j; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.time.LocalDateTime; import java.util.List; @Slf4j public abstract class SysUtil {
/** * 将网路图片保存到本地 * * @param url 文件网络地址 * @param filePath 文件保存地址 * @param fileName 文件名称 */ public static String saveFileByUrl(String url, String filePath, String fileName) { //String fileName = SysUtil.genFileName(url); //创建不同的文件夹目录 File file = new File(filePath); //判断文件夹是否存在 if (!file.exists()) { //如果文件夹不存在,则创建新的的文件夹 file.mkdirs(); } FileOutputStream fileOut = null; HttpURLConnection conn = null; InputStream inputStream = null; try { // 建立链接 URL httpUrl = new URL(url); conn = (HttpURLConnection) httpUrl.openConnection(); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.setDoOutput(true); // post方式不能使用缓存 conn.setUseCaches(false); //连接指定的资源 conn.connect(); //获取网络输入流 inputStream = conn.getInputStream(); BufferedInputStream bis = new BufferedInputStream(inputStream); //判断文件的保存路径后面是否以/结尾 if (!filePath.endsWith("/")) { filePath += "/"; } //写入到文件(注意文件保存路径的后面一定要加上文件的名称) fileOut = new FileOutputStream(filePath + fileName); BufferedOutputStream bos = new BufferedOutputStream(fileOut); byte[] buf = new byte[4096]; int length = bis.read(buf); //保存文件 while (length != -1) { bos.write(buf, 0, length); length = bis.read(buf); } bos.close(); bis.close(); conn.disconnect(); return filePath + fileName; } catch (Exception e) { e.printStackTrace(); throw new SysException("文件处理异常"); } } /** * 将网路图片保存到本地 * * @param url 文件网络地址 * @param filePath 文件保存地址 * @param fileName 文件名称 */ public static void saveFileByUrlAndFileName(String url, String filePath,String fileName) { //创建不同的文件夹目录 File file = new File(filePath); //判断文件夹是否存在 if (!file.exists()) { //如果文件夹不存在,则创建新的的文件夹 file.mkdirs(); } FileOutputStream fileOut = null; HttpURLConnection conn = null; InputStream inputStream = null; try { // 建立链接 URL httpUrl = new URL(url); conn = (HttpURLConnection) httpUrl.openConnection(); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.setDoOutput(true); // post方式不能使用缓存 conn.setUseCaches(false); //连接指定的资源 conn.connect(); //获取网络输入流 inputStream = conn.getInputStream(); BufferedInputStream bis = new BufferedInputStream(inputStream); //判断文件的保存路径后面是否以/结尾 if (!filePath.endsWith("/")) { filePath += "/"; } //写入到文件(注意文件保存路径的后面一定要加上文件的名称) fileOut = new FileOutputStream(filePath + fileName); BufferedOutputStream bos = new BufferedOutputStream(fileOut); byte[] buf = new byte[4096]; int length = bis.read(buf); //保存文件 while (length != -1) { bos.write(buf, 0, length); length = bis.read(buf); } bos.close(); bis.close(); conn.disconnect(); } catch (Exception e) { e.printStackTrace(); throw new SysException("文件处理异常"); } } public static void saveFileByUrl(String url, String filePath) { String fileName = SysUtil.genFileName(url); //创建不同的文件夹目录 File file = new File(filePath); //判断文件夹是否存在 if (!file.exists()) { //如果文件夹不存在,则创建新的的文件夹 file.mkdirs(); } FileOutputStream fileOut = null; HttpURLConnection conn = null; InputStream inputStream = null; try { // 建立链接 URL httpUrl = new URL(url); conn = (HttpURLConnection) httpUrl.openConnection(); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.setDoOutput(true); // post方式不能使用缓存 conn.setUseCaches(false); //连接指定的资源 conn.connect(); //获取网络输入流 inputStream = conn.getInputStream(); BufferedInputStream bis = new BufferedInputStream(inputStream); //判断文件的保存路径后面是否以/结尾 if (!filePath.endsWith("/")) { filePath += "/"; } //写入到文件(注意文件保存路径的后面一定要加上文件的名称) fileOut = new FileOutputStream(filePath + fileName); BufferedOutputStream bos = new BufferedOutputStream(fileOut); byte[] buf = new byte[4096]; int length = bis.read(buf); //保存文件 while (length != -1) { bos.write(buf, 0, length); length = bis.read(buf); } bos.close(); bis.close(); conn.disconnect(); } catch (Exception e) { e.printStackTrace(); throw new SysException("文件处理异常"); } } public static void saveFileByUrl(List<String> urls, String filePath) { urls.forEach(url -> SysUtil.saveFileByUrl(url, filePath)); } /** * 推送订单时,订单编号请按照 平台方缩写+年月日时+6位数字 的格式推送 * * @return 订单编号 */ public static String genOrderId() { return "LX" + DateUtil.format(LocalDateTime.now(), "yyyyMMddHH") + RandomUtil.randomInt(100000, 1000000); } /** * 生成文件名 */ public static String genFileName(String suffix) { return IdUtil.fastSimpleUUID() + suffix; } /** * 生成路径 */ public static String appendPath(String fileName) { String os = System.getProperty("os.name"); // windows使用反斜杠 if (StrUtil.containsIgnoreCase(os, SysInstance.SYSTEM_WINDOWS)) { fileName += "\\"; } else { fileName += "/"; } File upload = new File(fileName); if (!upload.exists()) { upload.mkdirs(); } return fileName; } }