Aliyun OSS存储上传文件

首先第一步也是必不可少的一步,引入aliyun的依赖:

com.aliyun.oss aliyun-sdk-oss joda-time joda-time

然后在Application配置文件中配置相关的信息:
#阿里云 oss服务
#不同的服务器,地址不同
aliyun:
oss:
file:
endpoint: XXXX #地域节点
keyid: XXXX #id
keysecret: XXXX #KeySecret密钥
#bucket可以在控制台创建也可以在java代码创建
bucketname: XXXX #bucket名称
创建一个实体类用来读取配置文件中的信息:
@Component //把当前实体类交给Spring管理
public class ConstantPropertiesUtils implements InitializingBean {
/读取配置文件内容/
@Value("${aliyun.oss.file.endpoint}")
private String endpoint;

@Value("${aliyun.oss.file.keyid}")
private String keyId;

@Value("${aliyun.oss.file.keysecret}")
private String keySecret;

@Value("${aliyun.oss.file.bucketname}")
private String bucketName;

/*定义公开静态常量*/
public static String END_POINT;
public static String ACCESS_KEY_ID;
public static String ACCESS_KEY_SECRET;
public static String BUCKET_NAME;

@Override
public void afterPropertiesSet() throws Exception {
    END_POINT = endpoint;
    ACCESS_KEY_ID =keyId;
    ACCESS_KEY_SECRET =keySecret;
    BUCKET_NAME =bucketName;
}

}
接下来就可以编写具体的方法了
@Override
public String uploadFileAvatar(MultipartFile file) {

// 创建OSSClient实例。

OSS ossClient = new OSSClientBuilder().build(ConstantPropertiesUtils.END_POINT, ConstantPropertiesUtils.ACCESS_KEY_ID, ConstantPropertiesUtils.ACCESS_KEY_SECRET);

try {
    // 上传文件流。
    InputStream inputStream = file.getInputStream();
    /*第一个参数 bucket名称*/
    /*第二个参数 上传到oss文件路径和文件名称 日期+UUID +file.getOriginalFilename()得到文件的原始名称 : 避免因为文件名称相同而覆盖的问题,并且把文件按照日期进行分类*/
    /*第三个参数 文件输入流*/

    /*把文件按照日期进行分类*/
    String fileName = new DateTime().toString("yyyy/MM/dd")+"/"+(UUID.randomUUID().toString().replaceAll("-","")+file.getOriginalFilename());

    ossClient.putObject(ConstantPropertiesUtils.BUCKET_NAME,fileName,inputStream);
    // 关闭OSSClient。
    ossClient.shutdown();
    /*把上传成功之后的路径返回 需要把上传到阿里云oss的路径手动拼接出来*/
    String url="https://"+ConstantPropertiesUtils.BUCKET_NAME+"."+ConstantPropertiesUtils.END_POINT+"/"+fileName;
    /*          https://  guli-xm.oss-cn-guangzhou             .   aliyuncs.com                      /    UUID+文件名 */
    return url;
}catch (Exception e){
    e.printStackTrace();
    return null;
}

}

然后在控制器中调用该方法
public ReturnJson uploadOssFile(MultipartFile file){
//获取上传文件MultipartFile
//返回上传到oss的路径
String url=ossService.uploadFileAvatar(file);
return ReturnJson.ok().data(“url”,url);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值