阿里云OSS图片上传,并通过返回的Url直接访问图片

获取yml配置文件的中的endpoint、accessKeyId、accessKeySecret、bucketName

aliyun:
 oss:
  endpoint: oss-cn-hangzhou.aliyuncs.com
  accessKeyId: 改成自己的id
  accessKeySecret: 改成自己的秘钥
  bucketName: mall-qsd
@Value("${aliyun.oss.endpoint}")
private String ALIYUN_OSS_ENDPOINT;
@Value("${aliyun.oss.accessKeyId}")
private String ALIYUN_OSS_ACCESSKEYID;
@Value("${aliyun.oss.accessKeySecret}")
private String ALIYUN_OSS_ACCESSKEYSECRET;
@Value("${aliyun.oss.bucketName}")
private String ALIYUN_OSS_BUCKETNAME;
public String uploadFile(MultipartFile file) throws IOException {
OSSClient ossClient = new OSSClient(ALIYUN_OSS_ENDPOINT, ALIYUN_OSS_ACCESSKEYID, ALIYUN_OSS_ACCESSKEYSECRET);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
// 获取文件名
String fileName = multipartFile.getOriginalFilename();
// 获取文件后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
// 最后上传生成的文件名
String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + suffixName;
// oss中的文件夹名
String objectName = sdf.format(new Date()) + "/" + finalFileName;
// 创建上传文件的元信息,可以通过文件元信息设置HTTP header(设置了才能通过返回的链接直接访问)。
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentType("image/jpg");
// 文件上传
ossClient.putObject(ALIYUN_OSS_BUCKETNAME, objectName, new ByteArrayInputStream(multipartFile.getBytes()),objectMetadata);
// 设置URL过期时间为1小时。
Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);
String url = ossClient.generatePresignedUrl(ALIYUN_OSS_BUCKETNAME, objectName, expiration).toString();
ossClient.shutdown();
log.info("阿里云OSS的文件url:{}", url);
return url;
}

转载:https://blog.csdn.net/qsd1530/article/details/106928947

posted @   Lafite-1820  阅读(3484)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示