后端实现上传文件接口,并使用阿里云的oss对象存储

在阿里云搜索对象存储oss,开通并进入到控制台

进入到控制台后,选择bucket列表然后创建bucket,bucket就类似文件夹

然后如果没有accesskey的要先创建,在右上角头像处

接下来就该敲代码了

先添加依赖

    <!-- 阿里云oss依赖 -->
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
    </dependency>

    <!-- 日期工具栏依赖 -->
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
    </dependency>

配置文件:oss配置见名知意,对应上述的accesskey的红框,bucket也对应开始创建的名字

# 服务端口
server.port=8205
# 服务名
spring.application.name=service-oss

#返回json的全局时间格式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

# nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

aliyun.oss.endpoint=oss-cn-shenzhen.aliyuncs.com
aliyun.oss.accessKeyId=LTAI4G4SV6WtST7UYH776b64
aliyun.oss.secret=X9KHNYgztNr9MI5Zp8JffQPZO4uJo5
aliyun.oss.bucket=yygh-cccwm

启动类

	//取消数据源自动配置
	@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
	@EnableDiscoveryClient
	@ComponentScan(basePackages = {"com.example"})
	public class ServiceOssApplication {
	    public static void main(String[] args) {
	        SpringApplication.run(ServiceOssApplication.class, args);
	    }
    }

controller

	@RestController
	@RequestMapping("/api/oss/file")
	public class FileApiController {
	    @Autowired
	    private FileService fileService;
	    //上传文件到阿里云oss
	    @PostMapping("fileUpload")
	    public Result fileUpload(MultipartFile file) {
	        //获取上传文件
	        String url = fileService.upload(file);
	        return Result.ok(url);
	    }
    }

service以及serviceimpl

	public interface FileService {
	    //上传文件到阿里云oss
	    String upload(MultipartFile file);
    }
@Service
public class FileServiceImpl implements FileService {
    //调用配置文件中oss配置的值
    @Value("${aliyun.oss.endpoint}")
    private String endpoint;

    @Value("${aliyun.oss.accessKeyId}")
    private String accessKeyId;

    @Value("${aliyun.oss.secret}")
    private String accessKeySecret ;

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

    @Override
    public String upload(MultipartFile file) {

        try {
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 上传文件流。
            InputStream inputStream = file.getInputStream();
            String fileName = file.getOriginalFilename();
            //生成随机唯一值,使用uuid,添加到文件名称里面,不会导致重名
            String uuid = UUID.randomUUID().toString().replaceAll("-","");
            fileName = uuid+fileName;
            //调用方法实现上传
            ossClient.putObject(bucketName, fileName, inputStream);
            // 关闭OSSClient。
            ossClient.shutdown();
            //上传之后文件路径
           // https://yygh-cccwm.oss-cn-shenzhen.aliyuncs.com/01.jpg
            String url = "https://"+bucketName+"."+endpoint+"/"+fileName;
            //返回
            return url;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}

下载接口也类似,可以参考阿里云的对象存储文档下载到本地文件 (aliyun.com)icon-default.png?t=M3C8https://help.aliyun.com/document_detail/84824.html

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值