目录已经实现本地存储、Minio云存储、阿里云、腾讯云、七牛云、华为云等文件存储服务。

公共配置

下面是文件存储的公共配置信息,具体含义如下:

  • storage.enabled 是否开启存储服务
  • storage.config.type 存储类型,可选值【local、minio、aliyun、tencent、qiniu、huawei】
  • storage.config.domain 访问域名,具体可以在第三方云服务里面配置,或者使用云服务提供的免费域名。如果是local,则为后端服务器地址。
  • storage.config.prefix 文件上传前缀,如:前缀为images,则访问路径会自动追加images前缀
storage:
  enabled: true
  config:
    type: local
    domain: http://localhost:8080
    prefix: 

API接口

引入组件后,我们就可以在程序里面调用,下面是存储API接口,如下所示:

/**
 * 存储服务API
 *
 * @author 阿沐 babamu@126.com
 */
@FeignClient(name = ServerNames.SYSTEM_SERVER_NAME)
public interface StorageApi {

    /**
     * 文件上传
     */
    @PostMapping(value = "api/storage/upload", produces = {MediaType.APPLICATION_JSON_VALUE},
            consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    Result<StorageDTO> upload(@RequestPart("file") MultipartFile file) throws IOException;

    class MultipartSupportConfig {
        @Bean
        public Encoder feignFormEncoder() {
            return new SpringFormEncoder();
        }
    }
}

API接口调用

下面提供了调用Feign接口的DEMO,如下所示:

@Service
@AllArgsConstructor
public class FileUploadService {
    private final StorageApi storageApi;

    public void upload(MultipartFile file) {
        String url = storageApi.upload(file);
    }
}