头像上传(阿里云oss存储服务)

4 篇文章 1 订阅
3 篇文章 2 订阅

本文将讲述如何使用Java代码上传文件到阿里云中,阿里云存储文件方便项目上线后的文件访问和存储,因为上线后就不能用本地进行存储了,后续的代码都在maven工程中进行编写的,当然使用SpringBoot工程也可以完成

使用步骤:

1.打开阿里云网站  https://www.aliyun.com/

2.注册阿里云账号

3.找到阿里云oss对象存储,立即开通

4.创建Bucket

5.上传文件即可

Java代码操作阿里云oss

1.上传文件到阿里云oss操作

1.准备工作:创建操作阿里云oss的许可证

找到Access Key并进行创建,然后保存好ID和密钥方便下一步操作

 2.在idea中已入以下依赖进行SDK的安装

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.5.2</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-ecs</artifactId>
    <version>4.17.6</version>
</dependency>

3.编写application.properties配置文件

其中最后四条要按照自己的实际写

第一个为:你的bucket的区域id,第二个为你的bucket的ID,第三个为密钥,最后一个bucket名称

#服务端口
server.port=8002
#服务名
spring.application.name=service-oss
#环境设置:dev、test、prod
spring.profiles.active=dev

#阿里云 OSS
#不同的服务器,地址不同
aliyun.oss.file.endpoint=oss-cn-beijing.aliyuncs.com
aliyun.oss.file.keyid=LTAI5tHb7RDmsLkRoUvVu2ik
aliyun.oss.file.keysecret=vf0sNHTfj14Q3ZhrJk9JyG8PtRFg9x
#bucket可以在控制台创建,也可以使用java代码创建
aliyun.oss.file.bucketname=renyi-1997

4.创建工具类从application.properties配置文件中读取内容

package com.atguigu.oss.utils;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class ConstantPropertiesUtil 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;
    }
}

5.创建controller类,设置访问地址调用service类

以下代码的controller和service需要创建controller和service包,且在同一个包下

其中的返回值类型可以写一个String类型,并返回成功即可

我这个是提前创建了一个返回类的提示工具类R,其他代码都一致

package com.atguigu.oss.controller;

import com.atguigu.commonutils.R;
import com.atguigu.oss.service.OssService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@CrossOrigin
@RestController
@RequestMapping("/eduoss/fileoss")
public class OssController {
    @Autowired
    private OssService ossService;
    @PostMapping
    public R uploadOssFile(MultipartFile file){
        //获取上传文件
        //返回上传oss路径
        String url = ossService.uploadFileAavatar(file);
        return R.ok().data("url", url);
    }
}

6.创建service接口

package com.atguigu.oss.service;

import org.springframework.web.multipart.MultipartFile;

public interface OssService {
    String uploadFileAavatar(MultipartFile file);
}

7.创建service的实现类

此实现类是实现文件上传的主要业务代码

package com.atguigu.oss.service.impl;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.atguigu.oss.service.OssService;
import com.atguigu.oss.utils.ConstantPropertiesUtil;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;

@Service
public class OssServiceImpl implements OssService {
    //上传头像到oss
    @Override
    public String uploadFileAavatar(MultipartFile file) {
        String endpoint = ConstantPropertiesUtil.END_POINT;
        String accessKeyId = ConstantPropertiesUtil.ACCESS_KEY_ID;
        String accessKeySecret = ConstantPropertiesUtil.ACCESS_KEY_SECRET;
        String bucketName = ConstantPropertiesUtil.BUCKET_NAME;


        try {
            //创建ossClinet实例
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            //上传文件流
            InputStream inputStream = file.getInputStream();
            //获取文件名称
            String filename = file.getOriginalFilename();
            //调用oss方法实现上传
            //1.第一个参数为bucket名称  第二个为文件路径和文件名称  第三个为上传文件的输入流
            ossClient.putObject(bucketName, filename,inputStream);
            ossClient.shutdown();
            //把上传文件的路径进行返回 https://renyi-1997.oss-cn-beijing.aliyuncs.com/888.jpg?versionId=null
            String url = "https://"+bucketName+"."+endpoint+"/"+filename;
            return url;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

8.创建启动类(要在service与controller包的父包中创建,也就是我这里的com.atguigu.oss包下)

package com.atguigu.oss;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@ComponentScan(basePackages = {"com.atguigu"})
public class OssApplication {
    public static void main(String[] args) {
        SpringApplication.run(OssApplication.class, args);
    }
}

上传文件到阿里云就可以实现了,在项目中要结合前端上传文件使用,这里可以用swagger进行测试

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猿学码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值