• 工具类(网络文件下载到本地)


    工具类(网络文件下载到本地)

    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 path 文件本地服务器路径
         * @return 文件ID、文件密码
         */
        public static FileInfo getFileIdAndPwd(String path) {
            try {
                String res = CCBSDK.upload(path);
                log.info("===>调用建行文件上传接口,返回值:【{}】", res);
                JSONObject jsonObject = JSONUtil.parseObj(res);
                JSONObject data = jsonObject.getJSONObject("Data");
                String fileId = data.getStr("File_Id");
                String authCode = data.getStr("Auth_Code");
                String fileName = data.getStr("File_Name");
                if (StrUtil.isNotBlank(fileId) && StrUtil.isNotBlank(authCode) && StrUtil.isNotBlank(fileName)) {
                    return FileInfo.builder().fileId(fileId).filePswd(authCode).fileName(fileName).build();
                }
                log.error("文件上传异常,未获取到文件ID、文件密码");
                throw new SysException("文件上传异常");
            } catch (Exception e) {
                log.error("调用建行文件上传接口异常");
                e.printStackTrace();
                throw new SysException("文件上传异常");
            }
        }
    
        /**
         * 将网路图片保存到本地
         *
         * @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;
        }
    
    }
  • 相关阅读:
    failed: unacceptable content-type: text/html
    iOS button点击更换图片
    支付宝ios SDK官方下载页面
    xcode6 中使用OC代码时,在NSObject的子类中报错
    CocoaPods安装和使用教程
    Mac 下安装Ruby环境
    iOS .a与.framewofk
    Couldn't find preset "es2015" relative to directory问题解决
    yarn依赖管理工具的使用
    java.io.IOException: Could not delete path 'D:mycode eactnativeSecondTestandroidappuildgeneratedsource eleaseandroidsupportv7
  • 原文地址:https://www.cnblogs.com/tangshengwei/p/15976321.html
Copyright © 2020-2023  润新知