package com.mzl.flower.service;
|
|
import com.aliyun.oss.OSS;
|
import com.aliyun.oss.OSSClientBuilder;
|
import com.mzl.flower.config.OssProperties;
|
import com.mzl.flower.config.exception.ValidationException;
|
import com.mzl.flower.utils.UUIDGenerator;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.io.InputStream;
|
|
@Service
|
@Transactional
|
public class UploadService {
|
|
@Autowired
|
private OssProperties ossProperties;
|
|
public String upload(InputStream inputStream, String fileName) {
|
//获取阿里云存储相关常量
|
String endPoint= ossProperties.getEndpoint();
|
String accessKeyId = ossProperties.getKeyid();
|
String accessKeySecret = ossProperties.getKeysecret();
|
String bucketName = ossProperties.getBucketname();
|
try {
|
//创建OssClient实例
|
OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, accessKeySecret);
|
|
//获取文件名称
|
String filename = fileName;
|
//使文件名称唯一
|
String uuid = UUIDGenerator.getUUID();
|
filename = uuid + filename;
|
String dir = uuid.substring(0, 2);
|
filename = dir + "/" + filename;
|
//调用oss方法实现上传
|
//参数:bucketName;上传到oss文件路径和文件名称;上传文件输入流
|
ossClient.putObject(bucketName, filename, inputStream);
|
//关闭OSSclient
|
ossClient.shutdown();
|
// 把上传之后文件路径返回,需手动拼接上传到阿里云的oss路径
|
// https://edu-mys.oss-cn-chengdu.aliyuncs.com/yy.JPG
|
String url = bucketName + "." + endPoint + "/" + filename;
|
|
return url;
|
} catch (Exception e) {
|
e.printStackTrace();
|
throw new ValidationException("上传到云服务器发生异常");
|
// return null;
|
}
|
}
|
}
|