OpenFeign 实现文件上传

HTTP 文件上传是一种通过 HTTP 协议将本地文件发送到远程服务器的机制。它允许用户从自己的设备(如电脑、手机)选择文件,并通过网络将这些文件传输到服务器进行存储、处理或其他操作。这是互联网应用中常见的功能,例如在社交媒体平台上传照片、在云存储服务上传文档等场景都会用到。

当进行文件上传时,通常使用 POST 请求方法,并且请求的 Content-Type 设置为 multipart/form-data。这种格式可以在一个请求中同时包含文件数据和其他表单数据(如文件的描述信息、上传者信息等)。在 multipart/form-data 请求中,数据被分成多个部分(part),每个部分都有自己的头部(header)和内容(content)。头部包含了如 Content-Disposition(用于描述部分的性质,例如是否是文件、文件名是什么等)和 Content-Type(用于描述部分的媒体类型)等信息。

文件上传示例

下面示例将使用 Spring Boot 实现上传文件功能,然后通过 Feign 客户端调用文件上传接口。

服务端代码:

@PostMapping("/upload")
public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) {
    if (file.isEmpty()) {
        return new ResponseEntity<>("请选择要上传的文件", HttpStatus.BAD_REQUEST);
    }

    try {
        // 将文件保存到指定目录,这里假设保存到项目根目录下的 uploads 文件夹
        File destination = new File("D:\\tmp\\uploads\\" + file.getOriginalFilename());
        file.transferTo(destination);
        return new ResponseEntity<>("文件上传成功", HttpStatus.OK);
    } catch (Exception e) {
        return new ResponseEntity<>("文件上传失败:" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

Feign 客户端代码:

// 上传文件
@PostMapping(value = "/simple/upload", consumes=MediaType.MULTIPART_FORM_DATA_VALUE)
ResponseEntity<String> uploadFile(@RequestPart("file") MultipartFile file);

注意:MediaType.MULTIPART_FORM_DATA_VALUE 是一个常量,用于表示 multipart/form-data 这种媒体类型。在 HTTP 通信中,它主要用于处理包含文件上传的表单数据或者复杂的表单数据(可能包含文件和其他非文件类型的数据)。

调用 Feign 客户端代码:

// 客户端代码,调用 Feign 上传文件
@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<String> uploadFile(@RequestPart("file") MultipartFile file) {
    return simpleFeign.uploadFile(file);
}

使用 ApiFox 调用,输出如下图:

image.png

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号