第一步 开通阿里云oss服务 获得密钥

	https://www.aliyun.com/product/oss

第二步 配置maven依赖

		<dependency>
			<groupId>com.aliyun.oss</groupId>
			<artifactId>aliyun-sdk-oss</artifactId>
			<version>3.1.0</version>
		</dependency>

第三步 写入配置文件

	endpoint: //配置oss服务
    accessKeyId: //配置oss服务
    accessKeySecret:  //配置oss服务
    bucketName: //配置oss服务

第四步 创建一个类 读取配置文件内容

@Component
public class ConstantOssInfo implements InitializingBean {
    @Value("${aliyun.oss.endpoint}")
    private String endpoint;
    @Value("${aliyun.oss.accessKeyId}")
    private String accessKeyId;
    @Value("${aliyun.oss.accessKeySecret}")
    private String accessKeySecret;
    @Value("${aliyun.oss.bucketName}")
    private String bucketName;

    public static String ENDPOINT;
    public static String ACCESSKEYID;
    public static String ACCESSKEYSECRET;
    public static String BUCKETNAME;
    @Override
    public void afterPropertiesSet() throws Exception {
        ENDPOINT=endpoint;
        ACCESSKEYID=accessKeyId;
        ACCESSKEYSECRET=accessKeySecret;
        BUCKETNAME=bucketName;
    }
}

创建service类 实现上传

@Service
public class OssServiceImpl implements OssService {
    @Override
    public String upload(MultipartFile file) {
    	//通过工具类中的属性 返回oss对象
        OSS oss = new OSSClientBuilder().build(ConstantOssInfo.ENDPOINT, ConstantOssInfo.ACCESSKEYID, 				ConstantOssInfo.ACCESSKEYSECRET);
        // 通过时间戳 防止图片重名,导致图片覆盖
        Date date = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY/MM/dd");
        String dateString = dateFormat.format(date);
        long time = new Date().getTime();
        String url=null;
        String fileName=dateString + "/" + time + file.getOriginalFilename();
        
        System.out.println(fileName);
        //获取文件流
        try(InputStream in = file.getInputStream()) {
        	//上传图片
            oss.putObject(ConstantOssInfo.BUCKETNAME,fileName, in);
            //通过阿里云控制台查看,获得上传的图片地址,自己拼接地址,返回
            //https://edu-liuchao.oss-cn-chengdu.aliyuncs.com/2020/08/29/15986964850883.jpg
            url="https://"+ConstantOssInfo.BUCKETNAME+"."+ConstantOssInfo.ENDPOINT+"/"+fileName;
        } catch (IOException e) {
            e.printStackTrace();
            //出现异常,通过自定义异常处理
            throw new CustomException(20001,"文件上传失败");
        }
        return url;
    }
}

创建controller类 通过swagger2测试

@Controller
@RequestMapping("/oss")
public class aliyunupload {
    @Autowired
    private OssService ossService;
    @PostMapping("/upload")
    public String upload(MultipartFile file){
        String url=ossService.upload(file);
        return url;
    }
}
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐