阿里oss图片上转

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.CannedAccessControlList;
import com.aliyun.oss.model.CreateBucketRequest;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import org.slf4j.LoggerFactory;

import javax.imageio.ImageIO;
import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

/**
 * 用于aliyunOSS上传工具类
 */
@org.springframework.stereotype.Component
public class AliyunOSSUpLoadUtil {

    private static final org.slf4j.Logger logger = LoggerFactory.getLogger(AliyunOSSUpLoadUtil.class);

    private static String FILE_URL;


    /**
     * 上传文件。
     */
    public static String upLoad(File file,String fileHost,String userId) {
        boolean isImage = true;
        // 判断所要上传的图片是否是图片,图片可以预览,其他文件不提供通过URL预览
        try {
            Image image = ImageIO.read(file);
            isImage = image == null ? false : true;
        } catch (IOException e) {
            e.printStackTrace();
        }
        logger.info("------OSS文件上传开始--------文件名:" + file.getName());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        String dateStr = format.format(new Date());
        // 判断文件
        if (file == null) {
            return null;
        }
        // 创建OSSClient实例。
        OSSClient ossClient = new OSSClient(AliyunOssParameters.endpoint, AliyunOssParameters.accessKeyId, AliyunOssParameters.accessKeySecret);
        try {
            // 判断容器是否存在,不存在就创建
            if (!ossClient.doesBucketExist(AliyunOssParameters.bucketName)) {
                ossClient.createBucket(AliyunOssParameters.bucketName);
                CreateBucketRequest createBucketRequest = new CreateBucketRequest(AliyunOssParameters.bucketName);
                createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
                ossClient.createBucket(createBucketRequest);
            }
            String fileUrl = fileHost + "/" + (userId+"/"+dateStr + "/" + UUID.randomUUID().toString().replace("-", "") + "-" + file.getName());
            if (isImage) {
                FILE_URL = "https://" + AliyunOssParameters.bucketName + "." + AliyunOssParameters.endpoint + "/" + fileUrl;
            } else {
                FILE_URL = "非图片,不可预览。文件路径为:" + fileUrl;
            }
            // 上传文件
            PutObjectResult result = ossClient.putObject(new PutObjectRequest(AliyunOssParameters.bucketName, fileUrl, file));
            ossClient.setBucketAcl(AliyunOssParameters.bucketName, CannedAccessControlList.PublicRead);
            if (result != null) {
                logger.info("------OSS文件上传成功------路径为:" + fileUrl);
            }
        } catch (OSSException oe) {
            logger.error(oe.getMessage());
        } catch (ClientException ce) {
            logger.error(ce.getErrorMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        return FILE_URL;
    }
}




public class AliyunOssParameters {

    private AliyunOssParameters(){}

    public static final String bucketName="zgmproject";
    public static final String endpoint ="oss-cn-beijing.aliyuncs.com";
    public static final String accessKeyId="LTAI7CuGElVyKydo";
    public static final String accessKeySecret="5qmY0k0OW14mJrqxXdRtSKaq92XaEE";
    public static final String FILE_HOST="zgm_auth/";
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值