OssService.java 10.2 KB
package com.lhcredit.common.utils.oss;

import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.ObjectMetadata;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.Date;
import java.util.UUID;


@Component
public class OssService {
    public static String URL="http://lhosstz.lhdna.com/";
    public static String KEY ="LTAI5tDibbbwJibGwbG2vsPz";
    public static String SECRET ="Obk3D1RKJoULl6MkqVkD2SuFqDdyqW";
    public static String ENDPOINT  ="http://oss-cn-beijing.aliyuncs.com";
    public static String BUCKET_NAME ="lh-tz"  ;

    public static String ROOT_DIRECTORY = "annex/";


    public static OSSClient init(){
        OSSClient client = new OSSClient(ENDPOINT,KEY, SECRET);
//        OSSClient client = new OSSClient(ConfigUtil.getConfigValues(OSS_ENDPOINT),ConfigUtil.getConfigValues(OSS_KEY), ConfigUtil.getConfigValues(OSS_SECRET));
        return client;
    }
    public static OSSClient init_internet(){
        OSSClient client = new OSSClient(ENDPOINT,KEY, SECRET);
        return client;
    }

    /**
     * downloadFile下载文件到一个输入流中
     * @param name
     * @return
     * @throws Exception
     * InputStream
     * @exception
     * @since  1.0.0
     */
    public static InputStream downloadFile(String name) throws Exception{
        OSSClient client=init();
        OSSObject object =  client.getObject(BUCKET_NAME, name);
        return object.getObjectContent();
    }


    public static void copyOssFile(String sourceKey,String destinationKey){
        OSSClient client=init();
        OSSObject object =  client.getObject(BUCKET_NAME, ROOT_DIRECTORY+sourceKey);
        try {
            Thread.sleep(2*1000);
        } catch (Exception e) {
            e.printStackTrace();
        }
        ObjectMetadata meta = new ObjectMetadata();
        meta.setContentType("image/jpeg;charset=utf-8");
//         // 上传Object.
        client.putObject(BUCKET_NAME, ROOT_DIRECTORY+destinationKey, object.getObjectContent(), meta);
//         // 关闭client
        client.shutdown();
    }
    /**
     * downloadFile下载文件到本地文件中
     * @param name
     * @param toFile
     * @return
     * @throws Exception
     * ObjectMetadata
     * @exception
     * @since  1.0.0
     */
    public static ObjectMetadata downloadFile(String name,String toFile) throws Exception{
        GetObjectRequest getObjectRequest = new GetObjectRequest(BUCKET_NAME,ROOT_DIRECTORY+name);
        OSSClient client=init();
        ObjectMetadata objectMetadata = client.getObject(getObjectRequest, new File(toFile));
        client.shutdown();
        return objectMetadata;
    }


    /**
     * @Description: 根据key获取oss服务器上的图片地址
     * @param key
     * @return
     * @ReturnType:String
     */
    public static String getImgURl(String key,String directory){
        // 设置URL过期时间为10年  3600l* 1000*24*365*10
        Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000 * 24 * 365 * 10);
        OSSClient client=init_internet();
        GeneratePresignedUrlRequest generatePresignedUrlRequest ;
        generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKET_NAME, directory+key);
        generatePresignedUrlRequest.setExpiration(expiration);
//        generatePresignedUrlRequest.setContentType("image/jpeg");
        // 添加user meta
        URL url = client.generatePresignedUrl(generatePresignedUrlRequest);
        return url.toString();
    }

    public static void uploadFile(String name, InputStream is,String directory) throws Exception{
        OSSClient client=init();
        ObjectMetadata meta = new ObjectMetadata();
        // 必须设置ContentLength
        meta.setContentLength(is.available());
        meta.setContentType("image/jpeg;charset=utf-8");
//        // 上传Object.
        client.putObject(BUCKET_NAME,ROOT_DIRECTORY+directory+name, is, meta);
//        // 关闭client
        client.shutdown();
    }

    public static void uploadOtherFile(String name, InputStream is,String directory) throws Exception{
        OSSClient client=init();
        ObjectMetadata meta = new ObjectMetadata();
        // 必须设置ContentLength
        meta.setContentLength(is.available());
        meta.setContentType("application/octet-stream;charset=utf-8");
//        // 上传Object.
        client.putObject(BUCKET_NAME,ROOT_DIRECTORY+directory+name, is, meta);
//        // 关闭client
        client.shutdown();
    }

    /**
     * 图片上传到OSS上
     * @param outPathFile
     */
    public static void uploadFile(String outPathFile,String sourceFile){

//     // 初始化OSSClient
        OSSClient client=init();
//        // 获取指定文件的输入流
        File file = new File(sourceFile);
        InputStream content=null;
        try {
            content = new FileInputStream(file);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        ObjectMetadata meta = new ObjectMetadata();
        meta.setContentLength(file.length());
        meta.setContentType("image/jpeg;charset=utf-8");
//        // 上传Object.
        client.putObject(BUCKET_NAME, ROOT_DIRECTORY+outPathFile, content, meta);
//        // 关闭client
        client.shutdown();
    }
    public static String uploadStream(String fileName,InputStream contentStream,Long size){
        System.out.println("上传");
        OSSClient client=init();
        ObjectMetadata meta = new ObjectMetadata();
        meta.setContentLength(size);
//        meta.setContentType("image/jpeg;charset=utf-8");
//        meta.setContentType("application/octet-stream;charset=utf-8");
        // 按directory分类上传Object.
        client.putObject(BUCKET_NAME, ROOT_DIRECTORY+fileName, contentStream, meta);
        //获取上传文件的路径
        // 关闭client
        client.shutdown();
        System.out.println("结束");
        return  URL+OssService.ROOT_DIRECTORY + fileName;
    }


    public static String  downloadFileUpdateOss(String path,String fileName){

        URL urlfile;
        InputStream contentStream = null;
        OSSClient client=init();
        String  url=null;
        try{
            //下载
            urlfile = new URL(path);
            contentStream = urlfile.openStream();
            ObjectMetadata meta = new ObjectMetadata();
//            meta.setContentType("image/jpeg;charset=utf-8");
            // 按directory分类上传Object.
            client.putObject(BUCKET_NAME, ROOT_DIRECTORY+fileName, contentStream, meta);
            url= OssService.ROOT_DIRECTORY + fileName;
        }catch (Exception e){
            e.printStackTrace();
        }
        try {
            if (null!=contentStream)
                contentStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //获取上传文件的路径
        // 关闭client
        client.shutdown();
        return url;
    }





    public static void deleteFile(String fileName){
        OSSClient client=init();
        client.deleteObject(BUCKET_NAME,fileName);
        client.shutdown();
    }





    //获取文件拓展名
    public static String getExtensionName(String filename) {
        if ((filename != null) && (filename.length() > 0)) {
            int dot = filename.lastIndexOf('.');
            if ((dot >-1) && (dot < (filename.length() - 1))) {
                return filename.substring(dot + 1);
            }else{
                return null;

            }
        }
        return filename;
    }

    //获取去除拓展名的文件名
    public static String getFileNameNoEx(String filename) {
        if ((filename != null) && (filename.length() > 0)) {
            int dot = filename.lastIndexOf('.');
            if ((dot >-1) && (dot < (filename.length()))) {
                return filename.substring(0, dot);
            }
        }
        return filename;
    }
    /**
     * 上传微信头像
     * @param urlStr 文件路径
     * @return 文件访问地址
     * @throws IOException
     */
    public static String uploadWx(String urlStr) throws IOException {
        URL url = new URL(urlStr);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        InputStream is=conn.getInputStream();
        OSSClient client=init();
        ObjectMetadata meta = new ObjectMetadata();
        meta.setContentLength(conn.getContentLength());
        meta.setContentType("image/jpeg;charset=utf-8");
        // 按directory分类上传Object.
        String time = String.valueOf(System.currentTimeMillis());
        String uuid= UUID.randomUUID().toString().replaceAll("-","");
        String saveName = uuid.concat("_").concat(time).concat(".").concat("jpeg");
        client.putObject(BUCKET_NAME, ROOT_DIRECTORY+saveName, is, meta);
        String  path= OssService.ROOT_DIRECTORY + saveName;
        //获取上传文件的路径
        // 关闭client
        client.shutdown();
        return path;
    }


    public static String uploadString(String content, String fileExtension) {
        byte[] buff = content.getBytes(Charset.forName("UTF-8"));
        ByteArrayInputStream stream = new ByteArrayInputStream(buff);
//        StorePath storePath = storageClient.uploadFile(stream,buff.length, fileExtension,null);
//        return getResAccessUrl(storePath);
        OSSClient client=init();
        ObjectMetadata meta = new ObjectMetadata();
        meta.setContentLength(buff.length);
        //meta.setContentType("image/jpeg;charset=utf-8");
        // 按directory分类上传Object.
        String time = String.valueOf(System.currentTimeMillis());
        String uuid= UUID.randomUUID().toString().replaceAll("-","");
        String saveName = uuid.concat("_").concat(time).concat(".").concat(fileExtension);
        client.putObject(BUCKET_NAME, ROOT_DIRECTORY+saveName, stream, meta);
        String  path= OssService.ROOT_DIRECTORY + saveName;
        return path;
    }



}