简单的Java整合阿里的OSS图片上传的demo
添加依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.0.0</version>
</dependency>
控制层
@ApiOperation(value = "图片上传")
@PostMapping("/upload")
@ApiImplicitParams({@ApiImplicitParam(name = "file",
value = "文件对象",
dataType = "MultipartFile",
required = true,
allowMultiple = true)})
public String uploadOssFile(MultipartFile file) {
//获取上传文件,用MultipartFile格式接收
//返回上传的oss路径
String url = uploadUtil.upload(file);
return url;
}
工具类
@Component
public class UploadUtil {
private String endpoint = "外网访问的地域节点";
/** AccessKey ID 和 AccessKey Secret 是您访问阿里云 API 的密钥,具有该账户完全的权限 */
private String accessKeyId = "阿里云账号AccessKey的Id";
private String accessKeySecret = "阿里云账号AccessKey的Secret";
private String bucketName = "Bucket名称";
public String upload(MultipartFile file) {
try {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件流。
InputStream inputStream = file.getInputStream();
//获取上传时的文件名
String filename = file.getOriginalFilename();
//在文件名称中添加随机唯一值
String uuid = UUID.randomUUID().toString().replace("-", "");
filename = uuid + filename;
//在OSS中按时间日期进行分类文件夹存储
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
filename = df.format(new Date()) +"/"+ filename;
/**
* <yourBucketName>:bucket名称
* <yourObjectName>:上传到oss文件路径和文件名称 =》 /a/1.jpg
*/
ossClient.putObject(bucketName, filename, inputStream);
// 关闭OSSClient。
ossClient.shutdown();
/**
* 把上传之后的文件路径返回,自行拼接
*/
String url = "https://"+bucketName+"."+endpoint+"/"+filename;
return url;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}