阿里云对象存储(oss)的使用


阿里云OSS使用

  • 首先在使用之前请先确保你已经申请了阿里云的oss对象存储服务(如果没有请先申请)
  • 请先获取到oss的 endpoint、keyid、keysecret、bucketname的值(每个人都不一样)

1、创建一个新的模块

配置文件为:

#服务名
spring.application.name=service-oss

server.port=8086

spring.profiles.active=dev

#阿里云oss配置 (以下信息替换成你自己的)
aliyun.oss.file.endpoint=***
aliyun.oss.file.keyid=***
aliyun.oss.file.keysecret=***
#bucket可以在控制台创建,也可以使用java代码创建
aliyun.oss.file.bucketname=***

2、创建utils、controller、service包 和 启动类

启动类为:

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)  //配置启动类不加载数据库
@ComponentScan(basePackages = {"com.hscs"})		//扫描包
public class OssApplication {
    public static void main(String[] args) {
        SpringApplication.run(OssApplication.class, args);
    }

}

3、在utils包下创建ConstantPropertiesUtlis类

@Component
public class ConstantPropertiesUtlis 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 KEY_ID;
    public static String KEY_SECRET;
    public static String BUCKET_NAME;

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


}

4、创建controller类

@Controller
@RequestMapping("oss/fileoss")
@CrossOrigin
public class OssController {

    @Autowired
    private OssService ossService;

    /**
     * 上传头像
     * */
    @PostMapping()
    public R uploadFileOss(MultipartFile file){
        String url=ossService.uploadFileAvatar(file);
        return R.ok().data("url",url);
    }

}

5、创建业务接口和实现接口类

//接口
public interface OssService {
    String uploadFileAvatar(MultipartFile file);
}

//类
/**
 * @author wmg
 *  文件上传业务实现
 */
@Service
public class OssServiceImpl implements OssService {
    @Override
    public String uploadFileAvatar(MultipartFile file) {
        String endpoint = ConstantPropertiesUtlis.END_POINT;
        String accessKeyId = ConstantPropertiesUtlis.KEY_ID;
        String accessKeySecret = ConstantPropertiesUtlis.KEY_SECRET;
        String bucketName=ConstantPropertiesUtlis.BUCKET_NAME;

        try{
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

            //获取文件名称
            String fileName = file.getOriginalFilename();
            //在文件里面添加随机唯一的id值,避免名字重复造成文件覆盖
            String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            fileName=uuid+fileName;
            //将文件按日期分类
            String datePath = new DateTime().toString("yyyy/MM/dd");
            fileName=datePath+"/"+fileName;
            // 上传文件流。
            InputStream inputStream = file.getInputStream();
            //第一个参数为bucket名  第二个参数为上传文件路径
            ossClient.putObject(bucketName, fileName, inputStream);

            //将上传路径返回  https://home-school-communication.oss-cn-guangzhou.aliyuncs.com/image/1.jpg
            String url="https://"+bucketName+"."+endpoint+"/"+fileName;


            // 关闭OSSClient。
            ossClient.shutdown();
            return url;
        }catch (Exception e){
            System.out.println("图片上传失败!");
            e.printStackTrace();
            return null;
        }

    }
}


文章作者: wumangeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 wumangeng !
  目录