阿里云OSS 公共服务

发布于:2024-04-29 ⋅ 阅读:(23) ⋅ 点赞:(0)

要创建一个微服务,可以对阿里云OSS进行文件上传和下载操作,并提供一个控制器接口供其他服务使用,我们通常可以使用Spring Boot来实现这一功能。下面我将为你提供一个简单的例子,展示如何构建这样一个服务。

1. 创建Spring Boot项目

首先,你需要创建一个Spring Boot项目。你可以使用Spring Initializr (https://start.spring.io/) 来快速生成项目结构。

选择以下配置:

  • 项目类型:Maven Project
  • 语言:Java
  • Spring Boot版本:选择最新稳定版本
  • 项目元数据:自定义 Group 和 Artifact
  • 依赖:Spring Web, Thymeleaf, Spring Boot DevTools, Alibaba Cloud OSS

2. 配置阿里云OSS

application.propertiesapplication.yml文件中添加阿里云OSS的配置:

oss:
  name: aliyun
  username: 
  password: 
  bucketName: shgbitai-resolve
  endpoint: https://oss-cn-hangzhou.aliyuncs.com

3. 创建OSS客户端配置类

在项目中创建一个配置类来配置OSS客户端:

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class OSSConfig {

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

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

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

    @Bean
    public OSS ossClient() {
        return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    }
}

4. 创建文件上传和下载的服务类

创建一个服务类来处理文件的上传和下载:

import com.aliyun.oss.OSS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.net.URL;
import java.util.Date;

@Service
public class FileService {

    @Autowired
    private OSS ossClient;

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

    public String uploadFile(MultipartFile file) {
        String fileName = file.getOriginalFilename();
        try {
            InputStream inputStream = file.getInputStream();
            ossClient.putObject(bucketName, fileName, inputStream);
        } catch (Exception e) {
            e.printStackTrace();
            return "上传失败";
        }
        return "上传成功";
    }

    public URL downloadFile(String fileName) {
        Date expiration = new Date(new Date().getTime() + 3600 * 1000);
        URL url = ossClient.generatePresignedUrl(bucketName, fileName, expiration);
        return url;
    }
}

5. 创建控制器

最后,创建一个控制器来提供HTTP接口:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

@RestController
@RequestMapping("/file")
public class FileController {

    @Autowired
    private FileService fileService;

    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        return fileService.uploadFile(file);
    }

    @GetMapping("/download")
    public URL downloadFile(@RequestParam("fileName") String fileName) {
        return fileService.downloadFile(fileName);
    }
}

这个例子提供了一个基础的框架,用于实现文件的上传和下载。你可以根据自己的需求进行扩展和优化。