|  | @@ -0,0 +1,742 @@
 | 
	
		
			
				|  |  | +package com.jeeplus.common.oss;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import com.aliyun.oss.ClientException;
 | 
	
		
			
				|  |  | +import com.aliyun.oss.OSSClient;
 | 
	
		
			
				|  |  | +import com.aliyun.oss.OSSException;
 | 
	
		
			
				|  |  | +import com.aliyun.oss.model.*;
 | 
	
		
			
				|  |  | +import com.jeeplus.common.config.Global;
 | 
	
		
			
				|  |  | +import com.jeeplus.common.utils.Encodes;
 | 
	
		
			
				|  |  | +import org.slf4j.Logger;
 | 
	
		
			
				|  |  | +import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  | +import org.springframework.web.multipart.MultipartFile;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import javax.servlet.http.HttpServletResponse;
 | 
	
		
			
				|  |  | +import java.io.*;
 | 
	
		
			
				|  |  | +import java.math.BigInteger;
 | 
	
		
			
				|  |  | +import java.net.URL;
 | 
	
		
			
				|  |  | +import java.net.URLEncoder;
 | 
	
		
			
				|  |  | +import java.nio.MappedByteBuffer;
 | 
	
		
			
				|  |  | +import java.nio.channels.FileChannel;
 | 
	
		
			
				|  |  | +import java.security.MessageDigest;
 | 
	
		
			
				|  |  | +import java.util.*;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * Created by Meng on 2017/6/8.
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +public class OSSClientUtil {
 | 
	
		
			
				|  |  | +    private static Logger logger = LoggerFactory.getLogger(OSSClientUtil.class);
 | 
	
		
			
				|  |  | +    private String appData = Global.getAppData();
 | 
	
		
			
				|  |  | +    private String endpoint = Global.getEndpoint();
 | 
	
		
			
				|  |  | +    private String accessKeyId = Global.getAccessKeyId();
 | 
	
		
			
				|  |  | +    private String accessKeySecret = Global.getAccessKeySecret();
 | 
	
		
			
				|  |  | +    private String bucketName = Global.getBucketName();
 | 
	
		
			
				|  |  | +    private String savePath = Global.getAliyunUrl();
 | 
	
		
			
				|  |  | +    private String avatarDir = Global.getAvatarDir();
 | 
	
		
			
				|  |  | +    private String notifyDir = Global.getNotifyDir();
 | 
	
		
			
				|  |  | +    private String reportDir = Global.getReportDir();
 | 
	
		
			
				|  |  | +    private String rqcode = Global.getRqcode();
 | 
	
		
			
				|  |  | +    private String goout = Global.getGoout();
 | 
	
		
			
				|  |  | +    private String leave = Global.getLeave();
 | 
	
		
			
				|  |  | +    private String overtimeform = Global.getOvertimeform();
 | 
	
		
			
				|  |  | +    private String sealform = Global.getSealform();
 | 
	
		
			
				|  |  | +    private String workReimbur = Global.getWorkReimbur();
 | 
	
		
			
				|  |  | +    private String evection = Global.getEvection();
 | 
	
		
			
				|  |  | +    private String photo = Global.getPhoto();
 | 
	
		
			
				|  |  | +    private String userEvaluation = Global.getUserEvaluation();
 | 
	
		
			
				|  |  | +    private String workBidingDocument = Global.getWorkBidingDocument();
 | 
	
		
			
				|  |  | +    private String workEngineeringProject = Global.getWorkEngineeringProject();
 | 
	
		
			
				|  |  | +    private String workFullExecute = Global.getWorkFullExecute();
 | 
	
		
			
				|  |  | +    private String workFullMeetingminutes = Global.getWorkFullMeetingminutes();
 | 
	
		
			
				|  |  | +    private String workFullDesignchange = Global.getWorkFullDesignchange();
 | 
	
		
			
				|  |  | +    private String workFullConstructsheet = Global.getWorkFullConstructsheet();
 | 
	
		
			
				|  |  | +    private String workFullProprietorsheet = Global.getWorkFullProprietorsheet();
 | 
	
		
			
				|  |  | +    private String workFullSupervisorsheet = Global.getWorkFullSupervisorsheet();
 | 
	
		
			
				|  |  | +    private String workProjectReport = Global.getWorkProjectReport();
 | 
	
		
			
				|  |  | +    private String workProjectBasis = Global.getWorkProjectBasis();
 | 
	
		
			
				|  |  | +    private String workProjectRemote = Global.getWorkProjectRemote();
 | 
	
		
			
				|  |  | +    private String workProjectSummary = Global.getWorkProjectSummary();
 | 
	
		
			
				|  |  | +    private String workProjectOther = Global.getWorkProjectOther();
 | 
	
		
			
				|  |  | +    private String workVisa = Global.getWorkVisa();
 | 
	
		
			
				|  |  | +    private String Officehonor = Global.getOfficehonor();
 | 
	
		
			
				|  |  | +    private String jobResume = Global.getJobResume();
 | 
	
		
			
				|  |  | +    private String satisfaction = Global.getSatisfaction();
 | 
	
		
			
				|  |  | +    private String certificate = Global.getCertificate();
 | 
	
		
			
				|  |  | +    private String judgeAttachment = Global.getJudgeAttachment();
 | 
	
		
			
				|  |  | +    private String oaBuy = Global.getOaBuy();
 | 
	
		
			
				|  |  | +    private String oaAll = Global.getOaAll();
 | 
	
		
			
				|  |  | +    private String im = Global.getIm();
 | 
	
		
			
				|  |  | +    private OSSClient ossClient;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public OSSClientUtil() {
 | 
	
		
			
				|  |  | +        ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 初始化
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public void init() {
 | 
	
		
			
				|  |  | +        ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 销毁
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public void destroy() {
 | 
	
		
			
				|  |  | +        ossClient.shutdown();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +     /**
 | 
	
		
			
				|  |  | +     * 上传文件
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param fileFile 文件
 | 
	
		
			
				|  |  | +      *  @param type 文件类型        avatar 头像;notify公告
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public String uploadFile2OSS(MultipartFile fileFile,String type){
 | 
	
		
			
				|  |  | +        switch (type){
 | 
	
		
			
				|  |  | +            case "appData":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,appData);
 | 
	
		
			
				|  |  | +            case "oaBuy":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,oaBuy);
 | 
	
		
			
				|  |  | +            case "oaAll":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,oaAll);
 | 
	
		
			
				|  |  | +            case "avatar":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,avatarDir);
 | 
	
		
			
				|  |  | +            case  "notify":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,notifyDir);
 | 
	
		
			
				|  |  | +            case "report":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,reportDir);
 | 
	
		
			
				|  |  | +            case "rqcode":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,rqcode);
 | 
	
		
			
				|  |  | +            case "goout":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,goout);
 | 
	
		
			
				|  |  | +            case  "leave":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,leave);
 | 
	
		
			
				|  |  | +            case "overtimeform":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,overtimeform);
 | 
	
		
			
				|  |  | +            case "sealform":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,sealform);
 | 
	
		
			
				|  |  | +            case "workReimbur":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,workReimbur);
 | 
	
		
			
				|  |  | +            case "evection":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,evection);
 | 
	
		
			
				|  |  | +            case "photo":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,photo);
 | 
	
		
			
				|  |  | +            case "userEvaluation" :
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,userEvaluation);
 | 
	
		
			
				|  |  | +            case "workBidingDocument":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,workBidingDocument);
 | 
	
		
			
				|  |  | +            case "workEngineeringProject":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,workEngineeringProject);
 | 
	
		
			
				|  |  | +            case "workFullExecute":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,workFullExecute);
 | 
	
		
			
				|  |  | +            case "workFullMeetingminutes":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,workFullMeetingminutes);
 | 
	
		
			
				|  |  | +            case "workFullDesignchange":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,workFullDesignchange);
 | 
	
		
			
				|  |  | +            case "workFullConstructsheet":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,workFullConstructsheet);
 | 
	
		
			
				|  |  | +            case "workFullProprietorsheet":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,workFullProprietorsheet);
 | 
	
		
			
				|  |  | +            case "workFullSupervisorsheet":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,workFullSupervisorsheet);
 | 
	
		
			
				|  |  | +            case "workProjectReport":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,workProjectReport);
 | 
	
		
			
				|  |  | +            case "workProjectBasis":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,workProjectBasis);
 | 
	
		
			
				|  |  | +            case "workProjectRemote":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,workProjectRemote);
 | 
	
		
			
				|  |  | +            case "workProjectSummary":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,workProjectSummary);
 | 
	
		
			
				|  |  | +            case "workProjectOther":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,workProjectOther);
 | 
	
		
			
				|  |  | +            case "workVisa":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,workVisa);
 | 
	
		
			
				|  |  | +            case "Officehonor":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,Officehonor);
 | 
	
		
			
				|  |  | +            case "jobResume":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,jobResume);
 | 
	
		
			
				|  |  | +            case "satisfaction":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,satisfaction);
 | 
	
		
			
				|  |  | +            case "certificate":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,certificate);
 | 
	
		
			
				|  |  | +            case "judgeAttachment":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,judgeAttachment);
 | 
	
		
			
				|  |  | +            case "im":
 | 
	
		
			
				|  |  | +                return uploadImg2OSS(fileFile,im);
 | 
	
		
			
				|  |  | +            default:
 | 
	
		
			
				|  |  | +                return "";
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//    /**
 | 
	
		
			
				|  |  | +//     * 上传文件
 | 
	
		
			
				|  |  | +//     *
 | 
	
		
			
				|  |  | +//     * @param url
 | 
	
		
			
				|  |  | +//     */
 | 
	
		
			
				|  |  | +//    public void uploadImg2OSS(String url) {
 | 
	
		
			
				|  |  | +//        File fileOnServer = new File(url);
 | 
	
		
			
				|  |  | +//        FileInputStream fin;
 | 
	
		
			
				|  |  | +//        try {
 | 
	
		
			
				|  |  | +//            fin = new FileInputStream(fileOnServer);
 | 
	
		
			
				|  |  | +//            String[] split = url.split("/");
 | 
	
		
			
				|  |  | +//            this.uploadFile2OSS(fin,this/filedir, split[split.length - 1]);
 | 
	
		
			
				|  |  | +//        } catch (FileNotFoundException e) {
 | 
	
		
			
				|  |  | +//            System.out.println("文件上传失败");
 | 
	
		
			
				|  |  | +//            e.printStackTrace();
 | 
	
		
			
				|  |  | +//        }
 | 
	
		
			
				|  |  | +//    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public String uploadImg2OSS(MultipartFile file,String fileDir) {
 | 
	
		
			
				|  |  | +        if (file.getSize() > 10 * 1024 * 1024) {
 | 
	
		
			
				|  |  | +            System.out.println("上传文件大小不能超过10M!");
 | 
	
		
			
				|  |  | +            return "上传文件大小不能超过10M!";
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        String originalFilename = file.getOriginalFilename();
 | 
	
		
			
				|  |  | +        String substring = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();
 | 
	
		
			
				|  |  | +        String fileName="";
 | 
	
		
			
				|  |  | +        fileDir = fileDir+System.nanoTime()+"/";
 | 
	
		
			
				|  |  | +        String md5 ="";
 | 
	
		
			
				|  |  | +        File f = null;
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            InputStream inputStream = file.getInputStream();
 | 
	
		
			
				|  |  | +            f=File.createTempFile("tmp", null);
 | 
	
		
			
				|  |  | +            file.transferTo(f);
 | 
	
		
			
				|  |  | +            f.deleteOnExit();
 | 
	
		
			
				|  |  | +            md5 = getMd5ByFile(f);
 | 
	
		
			
				|  |  | +            System.out.println(md5);
 | 
	
		
			
				|  |  | +            fileName=  md5+ substring;
 | 
	
		
			
				|  |  | +            System.out.println(fileName);
 | 
	
		
			
				|  |  | +            this.uploadFile2OSS(inputStream,fileDir, fileName);
 | 
	
		
			
				|  |  | +        }catch (IOException e){
 | 
	
		
			
				|  |  | +            e.printStackTrace();
 | 
	
		
			
				|  |  | +        }catch (Exception e1){
 | 
	
		
			
				|  |  | +            e1.printStackTrace();
 | 
	
		
			
				|  |  | +            System.out.println("文件上传失败");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        String name = savePath+"/"+fileDir+fileName;
 | 
	
		
			
				|  |  | +        return name;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public String uploadImg2OSSAndroid(MultipartFile file,String fileDir) {
 | 
	
		
			
				|  |  | +        /*if (file.getSize() > 10 * 1024 * 1024) {
 | 
	
		
			
				|  |  | +            System.out.println("上传文件大小不能超过10M!");
 | 
	
		
			
				|  |  | +            return "上传文件大小不能超过10M!";
 | 
	
		
			
				|  |  | +        }*/
 | 
	
		
			
				|  |  | +        String originalFilename = file.getOriginalFilename();
 | 
	
		
			
				|  |  | +        String substring = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();
 | 
	
		
			
				|  |  | +        String fileName="";
 | 
	
		
			
				|  |  | +        fileDir = fileDir+System.nanoTime()+"/";
 | 
	
		
			
				|  |  | +        String md5 ="";
 | 
	
		
			
				|  |  | +        File f = null;
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            InputStream inputStream = file.getInputStream();
 | 
	
		
			
				|  |  | +            f=File.createTempFile("tmp", null);
 | 
	
		
			
				|  |  | +            file.transferTo(f);
 | 
	
		
			
				|  |  | +            f.deleteOnExit();
 | 
	
		
			
				|  |  | +            md5 = getMd5ByFile(f);
 | 
	
		
			
				|  |  | +            System.out.println(md5);
 | 
	
		
			
				|  |  | +            fileName=  md5+ substring;
 | 
	
		
			
				|  |  | +            System.out.println(fileName);
 | 
	
		
			
				|  |  | +            this.uploadFile2OSSAndroid(inputStream,fileDir, fileName);
 | 
	
		
			
				|  |  | +        }catch (IOException e){
 | 
	
		
			
				|  |  | +            e.printStackTrace();
 | 
	
		
			
				|  |  | +        }catch (Exception e1){
 | 
	
		
			
				|  |  | +            e1.printStackTrace();
 | 
	
		
			
				|  |  | +            System.out.println("文件上传失败");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        String name = savePath+"/"+fileDir+fileName;
 | 
	
		
			
				|  |  | +        return name;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         * 上传到OSS服务器  如果同名文件会覆盖服务器上的
 | 
	
		
			
				|  |  | +         *
 | 
	
		
			
				|  |  | +         * @param fileName 文件名称 包括后缀名
 | 
	
		
			
				|  |  | +         * @return 出错返回"" ,唯一MD5数字签名
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  | +        public String uploadFile2OSS(InputStream inStream,String fileDir, String fileName) {
 | 
	
		
			
				|  |  | +            long start = System.currentTimeMillis();
 | 
	
		
			
				|  |  | +            //上传文件
 | 
	
		
			
				|  |  | +            PutObjectResult putResult = ossClient.putObject(bucketName, fileDir + fileName, inStream);
 | 
	
		
			
				|  |  | +            String ret = putResult.getETag();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            try {
 | 
	
		
			
				|  |  | +                if (inStream != null) {
 | 
	
		
			
				|  |  | +                    inStream.close();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            } catch (IOException e) {
 | 
	
		
			
				|  |  | +                e.printStackTrace();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            long end = System.currentTimeMillis();
 | 
	
		
			
				|  |  | +            logger.info("上传文件到云服务器成功,文件名:{},耗时:{}ms",fileName,end-start);
 | 
	
		
			
				|  |  | +            return ret;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     *Android安卓固定下载地址
 | 
	
		
			
				|  |  | +     * @param fileName 文件名称 包括后缀名
 | 
	
		
			
				|  |  | +     * @return 出错返回"" ,唯一MD5数字签名
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public String uploadFile2OSSAndroid(InputStream inStream,String fileDir, String fileName) {
 | 
	
		
			
				|  |  | +        long start = System.currentTimeMillis();
 | 
	
		
			
				|  |  | +        ByteArrayOutputStream baos = new ByteArrayOutputStream();
 | 
	
		
			
				|  |  | +        byte[] buffer = new byte[1024];
 | 
	
		
			
				|  |  | +        int len;
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            while ((len = inStream.read(buffer)) > -1 ) {
 | 
	
		
			
				|  |  | +                baos.write(buffer, 0, len);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            baos.flush();
 | 
	
		
			
				|  |  | +        } catch (IOException e1) {
 | 
	
		
			
				|  |  | +            // TODO Auto-generated catch block
 | 
	
		
			
				|  |  | +            e1.printStackTrace();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        InputStream is1 = new ByteArrayInputStream(baos.toByteArray());
 | 
	
		
			
				|  |  | +        InputStream is2 = new ByteArrayInputStream(baos.toByteArray());
 | 
	
		
			
				|  |  | +        //上传文件
 | 
	
		
			
				|  |  | +        PutObjectResult putResult = ossClient.putObject(bucketName, fileDir + fileName, is1);
 | 
	
		
			
				|  |  | +        ossClient.putObject(bucketName, Global.getVersion()+"ruihuaoa.apk", is2);
 | 
	
		
			
				|  |  | +        //ossClient.putObject(bucketName, Global.getTestVersion()+"ruihuaoa.apk", is2);//测试用
 | 
	
		
			
				|  |  | +        String ret = putResult.getETag();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            if (inStream != null) {
 | 
	
		
			
				|  |  | +                is1.close();
 | 
	
		
			
				|  |  | +                is2.close();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        } catch (IOException e) {
 | 
	
		
			
				|  |  | +            e.printStackTrace();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        long end = System.currentTimeMillis();
 | 
	
		
			
				|  |  | +        logger.info("上传文件到云服务器成功,文件名:{},耗时:{}ms",fileName,end-start);
 | 
	
		
			
				|  |  | +        return ret;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         *
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  | +        public void uploadFile2OSSToo(String key, String url) throws Throwable {
 | 
	
		
			
				|  |  | +            // 设置断点续传请求
 | 
	
		
			
				|  |  | +            UploadFileRequest uploadFileRequest = new UploadFileRequest(bucketName, key);
 | 
	
		
			
				|  |  | +            // 指定上传的本地文件
 | 
	
		
			
				|  |  | +            uploadFileRequest.setUploadFile(url);
 | 
	
		
			
				|  |  | +            // 指定上传并发线程数
 | 
	
		
			
				|  |  | +            uploadFileRequest.setTaskNum(5);
 | 
	
		
			
				|  |  | +            // 指定上传的分片大小
 | 
	
		
			
				|  |  | +            uploadFileRequest.setPartSize(1 * 1024 * 1024);
 | 
	
		
			
				|  |  | +            // 开启断点续传
 | 
	
		
			
				|  |  | +            uploadFileRequest.setEnableCheckpoint(true);
 | 
	
		
			
				|  |  | +            // 断点续传上传
 | 
	
		
			
				|  |  | +            UploadFileResult result = ossClient.uploadFile(uploadFileRequest);
 | 
	
		
			
				|  |  | +            System.out.println("233--"+result);
 | 
	
		
			
				|  |  | +            // 关闭client
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        public String getUploadId(String key){
 | 
	
		
			
				|  |  | +            InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, key);
 | 
	
		
			
				|  |  | +            InitiateMultipartUploadResult result = ossClient.initiateMultipartUpload(request);
 | 
	
		
			
				|  |  | +            String uploadId = result.getUploadId();
 | 
	
		
			
				|  |  | +            return uploadId;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         *获取已上传的分片
 | 
	
		
			
				|  |  | +         * UploadId,initiateMultipartUpload返回的结果获取
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  | +        public void uploadPartListing (String key){
 | 
	
		
			
				|  |  | +            String uploadId = getUploadId(key);
 | 
	
		
			
				|  |  | +            ListPartsRequest listPartsRequest = new ListPartsRequest(bucketName, key, uploadId);
 | 
	
		
			
				|  |  | +            PartListing partListing = ossClient.listParts(listPartsRequest);
 | 
	
		
			
				|  |  | +            for (PartSummary part : partListing.getParts()) {
 | 
	
		
			
				|  |  | +            // 分片号,上传时候指定
 | 
	
		
			
				|  |  | +                part.getPartNumber();
 | 
	
		
			
				|  |  | +            // 分片数据大小
 | 
	
		
			
				|  |  | +                part.getSize();
 | 
	
		
			
				|  |  | +            // Part的ETag
 | 
	
		
			
				|  |  | +                part.getETag();
 | 
	
		
			
				|  |  | +            // Part的最后修改上传
 | 
	
		
			
				|  |  | +                part.getLastModified();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         * 上传分片
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  | +        public void uploadSetEnableCheckpoint(String key,String localFile){
 | 
	
		
			
				|  |  | +            List<PartETag> partETags = new ArrayList<PartETag>();
 | 
	
		
			
				|  |  | +            InputStream instream = null;
 | 
	
		
			
				|  |  | +            try {
 | 
	
		
			
				|  |  | +                instream = new FileInputStream(new File(localFile));
 | 
	
		
			
				|  |  | +            } catch (FileNotFoundException e) {
 | 
	
		
			
				|  |  | +                e.printStackTrace();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            UploadPartRequest uploadPartRequest = new UploadPartRequest();
 | 
	
		
			
				|  |  | +            uploadPartRequest.setBucketName(bucketName);
 | 
	
		
			
				|  |  | +            uploadPartRequest.setKey(key);
 | 
	
		
			
				|  |  | +            String uploadId = "7188157413A24508B8E327913AFBFCCE";
 | 
	
		
			
				|  |  | +            uploadPartRequest.setUploadId(uploadId);
 | 
	
		
			
				|  |  | +            uploadPartRequest.setInputStream(instream);
 | 
	
		
			
				|  |  | +            // 设置分片大小,除最后一个分片外,其它分片要大于100KB
 | 
	
		
			
				|  |  | +            uploadPartRequest.setPartSize(100 * 1024);
 | 
	
		
			
				|  |  | +            // 设置分片号,范围是1~10000,
 | 
	
		
			
				|  |  | +            uploadPartRequest.setPartNumber(1);
 | 
	
		
			
				|  |  | +            UploadPartResult uploadPartResult = ossClient.uploadPart(uploadPartRequest);
 | 
	
		
			
				|  |  | +            partETags.add(uploadPartResult.getPartETag());
 | 
	
		
			
				|  |  | +            completeMultipartUpload(key,partETags);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         * 完成分片上传
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  | +        public void completeMultipartUpload(String key,List<PartETag> partETags){
 | 
	
		
			
				|  |  | +            String uploadId = "490C8D60323F4AE3ACA2C627A785902A";
 | 
	
		
			
				|  |  | +            Collections.sort(partETags, new Comparator<PartETag>() {
 | 
	
		
			
				|  |  | +                @Override
 | 
	
		
			
				|  |  | +                public int compare(PartETag p1, PartETag p2) {
 | 
	
		
			
				|  |  | +                    return p1.getPartNumber() - p2.getPartNumber();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +            CompleteMultipartUploadRequest completeMultipartUploadRequest =
 | 
	
		
			
				|  |  | +                    new CompleteMultipartUploadRequest(bucketName, key, uploadId, partETags);
 | 
	
		
			
				|  |  | +            ossClient.completeMultipartUpload(completeMultipartUploadRequest);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         * 取消分片上传事件
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  | +        public void abortMultipartUpload(String key){
 | 
	
		
			
				|  |  | +            // 取消分片上传,其中uploadId来自于initiateMultipartUpload
 | 
	
		
			
				|  |  | +            String uploadId = "490C8D60323F4AE3ACA2C627A785902A";
 | 
	
		
			
				|  |  | +            AbortMultipartUploadRequest abortMultipartUploadRequest =
 | 
	
		
			
				|  |  | +                    new AbortMultipartUploadRequest(bucketName, key, uploadId);
 | 
	
		
			
				|  |  | +            ossClient.abortMultipartUpload(abortMultipartUploadRequest);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         * 获取已上传的分片
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  | +        public void partListing(String key){
 | 
	
		
			
				|  |  | +            String uploadId = "490C8D60323F4AE3ACA2C627A785902A";
 | 
	
		
			
				|  |  | +            // 列举已上传的分片,其中uploadId来自于initiateMultipartUpload
 | 
	
		
			
				|  |  | +            ListPartsRequest listPartsRequest = new ListPartsRequest(bucketName, key, uploadId);
 | 
	
		
			
				|  |  | +            PartListing partListing = ossClient.listParts(listPartsRequest);
 | 
	
		
			
				|  |  | +            for (PartSummary part : partListing.getParts()) {
 | 
	
		
			
				|  |  | +                // 分片号,上传时候指定
 | 
	
		
			
				|  |  | +                part.getPartNumber();
 | 
	
		
			
				|  |  | +                // 分片数据大小
 | 
	
		
			
				|  |  | +                part.getSize();
 | 
	
		
			
				|  |  | +                // Part的ETag
 | 
	
		
			
				|  |  | +                part.getETag();
 | 
	
		
			
				|  |  | +                // Part的最后修改上传
 | 
	
		
			
				|  |  | +                part.getLastModified();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         * 获取所有已上传分片
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  | +        public ListPartsRequest listParts(String key){
 | 
	
		
			
				|  |  | +            String uploadId = getUploadId(key);
 | 
	
		
			
				|  |  | +            // 列举所有已上传的分片
 | 
	
		
			
				|  |  | +            PartListing partListing;
 | 
	
		
			
				|  |  | +            ListPartsRequest listPartsRequest = new ListPartsRequest(bucketName, key, uploadId);
 | 
	
		
			
				|  |  | +            do {
 | 
	
		
			
				|  |  | +                partListing = ossClient.listParts(listPartsRequest);
 | 
	
		
			
				|  |  | +                for (PartSummary part : partListing.getParts()) {
 | 
	
		
			
				|  |  | +                    // 分片号,上传时候指定
 | 
	
		
			
				|  |  | +                    part.getPartNumber();
 | 
	
		
			
				|  |  | +                    // 分片数据大小
 | 
	
		
			
				|  |  | +                    part.getSize();
 | 
	
		
			
				|  |  | +                    // Part的ETag
 | 
	
		
			
				|  |  | +                    part.getETag();
 | 
	
		
			
				|  |  | +                    // Part的最后修改上传
 | 
	
		
			
				|  |  | +                    part.getLastModified();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                listPartsRequest.setPartNumberMarker(partListing.getNextPartNumberMarker());
 | 
	
		
			
				|  |  | +            } while (partListing.isTruncated());
 | 
	
		
			
				|  |  | +            return listPartsRequest;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         * 分页获取所有分片
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  | +        public void listPartsPage(String key){
 | 
	
		
			
				|  |  | +            String uploadId = getUploadId(key);
 | 
	
		
			
				|  |  | +            // 分页列举已上传的分片
 | 
	
		
			
				|  |  | +            PartListing partListing;
 | 
	
		
			
				|  |  | +            ListPartsRequest listPartsRequest = new ListPartsRequest(bucketName, key, uploadId);
 | 
	
		
			
				|  |  | +            // 每页100个分片
 | 
	
		
			
				|  |  | +            listPartsRequest.setMaxParts(100);
 | 
	
		
			
				|  |  | +            do {
 | 
	
		
			
				|  |  | +                partListing = ossClient.listParts(listPartsRequest);
 | 
	
		
			
				|  |  | +                for (PartSummary part : partListing.getParts()) {
 | 
	
		
			
				|  |  | +                    // 分片号,上传时候指定
 | 
	
		
			
				|  |  | +                    part.getPartNumber();
 | 
	
		
			
				|  |  | +                    // 分片数据大小
 | 
	
		
			
				|  |  | +                    part.getSize();
 | 
	
		
			
				|  |  | +                    // Part的ETag
 | 
	
		
			
				|  |  | +                    part.getETag();
 | 
	
		
			
				|  |  | +                    // Part的最后修改上传
 | 
	
		
			
				|  |  | +                    part.getLastModified();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                listPartsRequest.setPartNumberMarker(partListing.getNextPartNumberMarker());
 | 
	
		
			
				|  |  | +            } while (partListing.isTruncated());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         * Description: 判断OSS服务文件上传时文件的contentType
 | 
	
		
			
				|  |  | +         *
 | 
	
		
			
				|  |  | +         * @param FilenameExtension 文件后缀
 | 
	
		
			
				|  |  | +         * @return String
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  | +        public String getcontentType(String FilenameExtension) {
 | 
	
		
			
				|  |  | +            if (FilenameExtension.equalsIgnoreCase("bmp")) {
 | 
	
		
			
				|  |  | +                return "image/bmp";
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (FilenameExtension.equalsIgnoreCase("gif")) {
 | 
	
		
			
				|  |  | +                return "image/gif";
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (FilenameExtension.equalsIgnoreCase("jpeg") ||
 | 
	
		
			
				|  |  | +                    FilenameExtension.equalsIgnoreCase("jpg") ||
 | 
	
		
			
				|  |  | +                    FilenameExtension.equalsIgnoreCase("png")) {
 | 
	
		
			
				|  |  | +                return "image/jpeg";
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (FilenameExtension.equalsIgnoreCase("html")) {
 | 
	
		
			
				|  |  | +                return "text/html";
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (FilenameExtension.equalsIgnoreCase("txt")) {
 | 
	
		
			
				|  |  | +                return "text/plain";
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (FilenameExtension.equalsIgnoreCase("vsd")) {
 | 
	
		
			
				|  |  | +                return "application/vnd.visio";
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (FilenameExtension.equalsIgnoreCase("pptx") ||
 | 
	
		
			
				|  |  | +                    FilenameExtension.equalsIgnoreCase("ppt")) {
 | 
	
		
			
				|  |  | +                return "application/vnd.ms-powerpoint";
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (FilenameExtension.equalsIgnoreCase("docx") ||
 | 
	
		
			
				|  |  | +                    FilenameExtension.equalsIgnoreCase("doc")) {
 | 
	
		
			
				|  |  | +                return "application/msword";
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (FilenameExtension.equalsIgnoreCase("xml")) {
 | 
	
		
			
				|  |  | +                return "text/xml";
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            return "image/jpeg";
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         * 获得url链接
 | 
	
		
			
				|  |  | +         *
 | 
	
		
			
				|  |  | +         * @param key
 | 
	
		
			
				|  |  | +         * @return
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  | +        public String getUrl(String key) {
 | 
	
		
			
				|  |  | +            // 设置URL过期时间为10年  3600l* 1000*24*365*10
 | 
	
		
			
				|  |  | +            Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
 | 
	
		
			
				|  |  | +            // 生成URL
 | 
	
		
			
				|  |  | +            URL url = ossClient.generatePresignedUrl(bucketName, key, expiration);
 | 
	
		
			
				|  |  | +            if (url != null) {
 | 
	
		
			
				|  |  | +                return url.toString();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            return null;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        public  String getMd5ByFile(File file) throws FileNotFoundException {
 | 
	
		
			
				|  |  | +            String value = null;
 | 
	
		
			
				|  |  | +            FileInputStream in = new FileInputStream(file);
 | 
	
		
			
				|  |  | +            try {
 | 
	
		
			
				|  |  | +                MappedByteBuffer byteBuffer = in.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length());
 | 
	
		
			
				|  |  | +                MessageDigest md5 = MessageDigest.getInstance("MD5");
 | 
	
		
			
				|  |  | +                md5.update(byteBuffer);
 | 
	
		
			
				|  |  | +                BigInteger bi = new BigInteger(1, md5.digest());
 | 
	
		
			
				|  |  | +                value = bi.toString(16);
 | 
	
		
			
				|  |  | +            } catch (Exception e) {
 | 
	
		
			
				|  |  | +                e.printStackTrace();
 | 
	
		
			
				|  |  | +            } finally {
 | 
	
		
			
				|  |  | +                if(null != in) {
 | 
	
		
			
				|  |  | +                    try {
 | 
	
		
			
				|  |  | +                        in.close();
 | 
	
		
			
				|  |  | +                    } catch (IOException e) {
 | 
	
		
			
				|  |  | +                        e.printStackTrace();
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            return value;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         * 删除单个文件
 | 
	
		
			
				|  |  | +         * @param key  Bucket下的文件的路径名+文件名
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  | +        public void deleteSingleObject(String key){
 | 
	
		
			
				|  |  | +            OSSObject object = null ;
 | 
	
		
			
				|  |  | +            try {
 | 
	
		
			
				|  |  | +                object = ossClient.getObject(bucketName, key);
 | 
	
		
			
				|  |  | +                if(object != null){
 | 
	
		
			
				|  |  | +                    ossClient.deleteObject(bucketName, key);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            } catch (OSSException oe) {
 | 
	
		
			
				|  |  | +                oe.printStackTrace();
 | 
	
		
			
				|  |  | +            } catch (ClientException ce) {
 | 
	
		
			
				|  |  | +                ce.printStackTrace();
 | 
	
		
			
				|  |  | +            } catch (Exception e) {
 | 
	
		
			
				|  |  | +                e.printStackTrace();
 | 
	
		
			
				|  |  | +            } finally {
 | 
	
		
			
				|  |  | +                if(ossClient != null){
 | 
	
		
			
				|  |  | +                    try {
 | 
	
		
			
				|  |  | +                        ossClient.shutdown();
 | 
	
		
			
				|  |  | +                    }catch (Exception e){
 | 
	
		
			
				|  |  | +                        e.printStackTrace();
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public void downLoadFile(String key,String fileName) {
 | 
	
		
			
				|  |  | +        String bucketName = Global.getBucketName();
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            // 带进度条的下载
 | 
	
		
			
				|  |  | +            ossClient.getObject(new GetObjectRequest(bucketName, key).
 | 
	
		
			
				|  |  | +                            <GetObjectRequest>withProgressListener(new GetObjectProgressListener()),
 | 
	
		
			
				|  |  | +                    new File(fileName));
 | 
	
		
			
				|  |  | +        } catch (Exception e) {
 | 
	
		
			
				|  |  | +            e.printStackTrace();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        ossClient.shutdown();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 附件下载
 | 
	
		
			
				|  |  | +     * @param key
 | 
	
		
			
				|  |  | +     * @param fileName
 | 
	
		
			
				|  |  | +     * @param response
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public void downByStream(String key, String fileName, HttpServletResponse response,String agent){
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            String newName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20").replaceAll("%28", "\\(").replaceAll("%29", "\\)").replaceAll("%3B", ";").replaceAll("%40", "@").replaceAll("%23", "\\#").replaceAll("%26", "\\&").replaceAll("%2C", "\\,");
 | 
	
		
			
				|  |  | +            // 创建OSSClient实例
 | 
	
		
			
				|  |  | +            OSSObject ossObject = ossClient.getObject(bucketName, key);
 | 
	
		
			
				|  |  | +            BufferedInputStream in = new BufferedInputStream(ossObject.getObjectContent());
 | 
	
		
			
				|  |  | +            BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
 | 
	
		
			
				|  |  | +            response.setHeader("Content-Disposition","attachment;filename*=UTF-8''"+ newName);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            /*if(agent != null && agent.toLowerCase().indexOf("firefox") > 0){
 | 
	
		
			
				|  |  | +                response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''"+ URLEncoder.encode(fileName,"utf-8"));
 | 
	
		
			
				|  |  | +            }else {
 | 
	
		
			
				|  |  | +                response.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(fileName,"utf-8"));
 | 
	
		
			
				|  |  | +            }*/
 | 
	
		
			
				|  |  | +            byte[] car=new byte[1024];
 | 
	
		
			
				|  |  | +            int L=0;
 | 
	
		
			
				|  |  | +            while((L=in.read(car))!=-1){
 | 
	
		
			
				|  |  | +                out.write(car, 0,L);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if(out!=null){
 | 
	
		
			
				|  |  | +                out.flush();
 | 
	
		
			
				|  |  | +                out.close();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if(in!=null){
 | 
	
		
			
				|  |  | +                in.close();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        } catch (Exception e) {
 | 
	
		
			
				|  |  | +            e.printStackTrace();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 文件下载
 | 
	
		
			
				|  |  | +     * @param key
 | 
	
		
			
				|  |  | +     * @param fileName
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public byte[] downBytesByStream(String key, String fileName){
 | 
	
		
			
				|  |  | +        byte[] bytes = null;
 | 
	
		
			
				|  |  | +        BufferedInputStream in = null;
 | 
	
		
			
				|  |  | +        ByteArrayOutputStream outputStream = null;
 | 
	
		
			
				|  |  | +        logger.info("开始从云服务器加载文件,文件名:{}",fileName);
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            // 创建OSSClient实例
 | 
	
		
			
				|  |  | +            long start = System.currentTimeMillis();
 | 
	
		
			
				|  |  | +            OSSObject ossObject = ossClient.getObject(bucketName, key);
 | 
	
		
			
				|  |  | +            in = new BufferedInputStream(ossObject.getObjectContent());
 | 
	
		
			
				|  |  | +            outputStream = new ByteArrayOutputStream();
 | 
	
		
			
				|  |  | +            byte[] car=new byte[1024];
 | 
	
		
			
				|  |  | +            int L=0;
 | 
	
		
			
				|  |  | +            while((L=in.read(car))!=-1){
 | 
	
		
			
				|  |  | +                outputStream.write(car, 0,L);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            bytes = outputStream.toByteArray();
 | 
	
		
			
				|  |  | +            long end = System.currentTimeMillis();
 | 
	
		
			
				|  |  | +            logger.info("从云服务器加载文件成功,文件名:{},耗时:{}ms",fileName,end-start);
 | 
	
		
			
				|  |  | +        } catch (Exception e) {
 | 
	
		
			
				|  |  | +            e.printStackTrace();
 | 
	
		
			
				|  |  | +        }finally {
 | 
	
		
			
				|  |  | +            if (in!=null){
 | 
	
		
			
				|  |  | +                try {
 | 
	
		
			
				|  |  | +                    in.close();
 | 
	
		
			
				|  |  | +                } catch (IOException e) {
 | 
	
		
			
				|  |  | +                    e.printStackTrace();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (outputStream!=null){
 | 
	
		
			
				|  |  | +                try {
 | 
	
		
			
				|  |  | +                    outputStream.close();
 | 
	
		
			
				|  |  | +                } catch (IOException e) {
 | 
	
		
			
				|  |  | +                    e.printStackTrace();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return  bytes;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 附件转pdf
 | 
	
		
			
				|  |  | +     * @param key
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public BufferedInputStream recInputStream(String key){
 | 
	
		
			
				|  |  | +        // 创建OSSClient实例
 | 
	
		
			
				|  |  | +        OSSObject ossObject = ossClient.getObject(bucketName, key);
 | 
	
		
			
				|  |  | +        BufferedInputStream in = new BufferedInputStream(ossObject.getObjectContent());
 | 
	
		
			
				|  |  | +        return in;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public static void main(String[] args){
 | 
	
		
			
				|  |  | +       /* OSSClientUtil os = new OSSClientUtil();
 | 
	
		
			
				|  |  | +        os.downByOpenOffice("app-data/notify/35690003238131.docx","e:/pre.pdf","");*/
 | 
	
		
			
				|  |  | +        /*String endpoint = Global.getEndpoint();
 | 
	
		
			
				|  |  | +        String accessKeyId = Global.getAccessKeyId();
 | 
	
		
			
				|  |  | +        String accessKeySecret = Global.getAccessKeySecret();
 | 
	
		
			
				|  |  | +        String bucketName = Global.getBucketName();
 | 
	
		
			
				|  |  | +        OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
 | 
	
		
			
				|  |  | +        String key = "app-data/appfiles/932059357.war";
 | 
	
		
			
				|  |  | +        String url = "F:\\code\\jeeplus_maven\\target\\jeeplus.war";
 | 
	
		
			
				|  |  | +        // 设置断点续传请求
 | 
	
		
			
				|  |  | +        UploadFileRequest uploadFileRequest = new UploadFileRequest(bucketName, key);
 | 
	
		
			
				|  |  | +        // 指定上传的本地文件
 | 
	
		
			
				|  |  | +        uploadFileRequest.setUploadFile(url);
 | 
	
		
			
				|  |  | +        // 指定上传并发线程数
 | 
	
		
			
				|  |  | +        uploadFileRequest.setTaskNum(5);
 | 
	
		
			
				|  |  | +        // 指定上传的分片大小
 | 
	
		
			
				|  |  | +        uploadFileRequest.setPartSize(1 * 1024 * 1024);
 | 
	
		
			
				|  |  | +        // 开启断点续传
 | 
	
		
			
				|  |  | +        uploadFileRequest.setEnableCheckpoint(true);
 | 
	
		
			
				|  |  | +        // 断点续传上传
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            ossClient.uploadFile(uploadFileRequest);
 | 
	
		
			
				|  |  | +        } catch (Throwable throwable) {
 | 
	
		
			
				|  |  | +            throwable.printStackTrace();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            // 带进度条的上传
 | 
	
		
			
				|  |  | +            ossClient.putObject(new PutObjectRequest(bucketName, key, new FileInputStream(url)).
 | 
	
		
			
				|  |  | +                    <PutObjectRequest>withProgressListener(new PutObjectProgressListener()));
 | 
	
		
			
				|  |  | +        } catch (Exception e) {
 | 
	
		
			
				|  |  | +            e.printStackTrace();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        ossClient.shutdown();*/
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |