文件上传

文件上传功能是so-fast内置功能,推荐用于较小文件上传,对于大文件并没有做切片和多线程的优化。

文件上传功能仅提供本地文件存储或NFS文件存储,目前不支持对象存储。

so-fast框架内置了BaseFileController用于所有文件上传的操作。

文件上传分类

so-fast框架推荐将上传的文件进行分类,并内置了对应的api进行处理:

头像上传:/file/upload/avatar:头像上传专用于个人中心的头像处理,仅支持单文件上传。

图片上传:/file/upload/image:图片上传用于所有图片类型的文件上传,有图片类型的检查,方便专用于图片的上传业务。

文件上传:/file/upload: 文件上传是通用的上传,支持大多数类型文件(可配置)。

ps:当然,也可以不进行分类,统一使用某一种或某两种api进行上传。视业务而定

    @Value("${sofast.file.avatarPath}")
    private String avatarPath;

    @Value("${sofast.file.imagePath}")
    private String imagePath;

    @Value("${sofast.file.filePath}")
    private String filePath;

    @ApiOperation(value = "头像上传")
    @PostMapping("/file/upload/avatar")
    public R uploadAvatar(@RequestParam("file") MultipartFile file) throws IOException {
        // 获取文件存储的根目录
        return R.data(SolFileUtils.uploadImage(file, avatarPath));
    }

    @ApiOperation(value = "图片上传")
    @PostMapping(value = "/file/upload/image", headers = "Content-Type=multipart/form-data")
    public R uploadPicture(@RequestParam("files") MultipartFile[] files) throws IOException         {
        // 获取文件存储的根目录
        return R.data(SolFileUtils.uploadImages(files, imagePath));
    }

    @ApiOperation(value = "文件上传,支持所有的文件格式")
    @PostMapping(value = "/file/upload", headers = "Content-Type=multipart/form-data")
    public R upload(@RequestParam("files") MultipartFile[] files) throws IOException {
        // 获取文件存储的根目录
        return R.data(SolFileUtils.uploadFiles(files, filePath));
    }

上传路径配置

文件上传需要配置上传的目录,根据api分类,so-fast也提供了3个文件目录配置项,可分类使用,也可使用其中某一个。

sofast:
  file:
    # 头像存储路径
    avatarPath: /Users/yyq/Downloads/sofast/avatar/
    # 图片文件上传路径
    imagePath: /Users/yyq/Downloads/sofast/images/
    # 文件上传路径
    filePath: /Users/yyq/Downloads/sofast/files/

上传文件大小配置

文件上传时,一般前后端都会有文件大小的限制与检查。在后台可通过配置文件灵活调整文件size限制:

spring:
  # 文件上传
  servlet:
    multipart:
      # 单个文件大小
      max-file-size:  10MB
      # 设置总上传的文件大小
      max-request-size:  200MB

文件上传超时问题

文件上传超时问题可能是常见问题,需要根据业务中文件的最大size进行计算后,配置一个相对合理的超时时间。

涉及超时时间的有:

前台vue部分,发送上传请求时有timeout参数

后台服务部分,接口的timeout参数

spring:
  mvc:
    async:
      # 超时时间
      request-timeout: 25000

如果有代理服务器,例如nginx,那么针对文件上传也要配置一些nginx参数。

Copyright © 2020. 恩梯梯数据(中国)信息技术有限公司. all right reserved,powered by Gitbook该文件修订时间: 2021-03-15 14:41:07

results matching ""

    No results matching ""