Spring Cloud Feign MultipartFile文件上传踩坑之路(包含前端文件上传请求、后端文件保存到aliyun-oss文件服务器)

Spring Cloud Feign MultipartFile文件上传踩坑之路总结

一、前端文件上传

文件上传组件用的是ant-design的a-upload组件,我的界面如下所示:
在这里插入图片描述
文件上传请求API:
FileUtils.js

import axios from "axios"

const uploadApi = ({
   file, URL, onUploadProgress}) => {
   
    const formData = new FormData()
    formData.append('file', file)
    return axios.post(URL, formData, {
   headers:{
   
        'Content-type': 'multipart/form-data',
      },
      onUploadProgress // 上传进度回调函数 onUploadProgress(ev))
    }) 
}

export default uploadApi;

需要注意的只有FileUtils.js定义的uploadApi请求函数,其中URL为后端请求接口(“/imageConvert/upload”),文件上传方法必须定义为POST,在headers加入’Content-type’: ‘multipart/form-data’,后端即可用@RequestParam或者@RequestPart + MultipartFile 来接受文件。
FileUpload.vue(无关紧要,用法大致相同,看你自己需求,这里只是提供一个参考范例)

// 自定义文件上传公共函数
// e - 上传组件返回的上传实例,里面包括 file,和一些组件方法
// e.file - 上传的文件实例对象
const customUpload = e => {
   
    let curFile = fileList.value.filter(item => item.uid == e.file.uid)[0]
    curFile.status = 'uploading'
    uploadApi({
   
        file: e.file,
        URL: '/imageConvert/upload',
        // uid: 'admin',  // 需要更改为用户id,待修改
        onUploadProgress: ev => {
   
            // ev - axios 上传进度实例,上传过程触发多次
            // ev.loaded 当前已上传内容的大小,ev.total - 本次上传请求内容总大小
            // console.log(ev);
            const percent = (ev.loaded / ev.total) * 100;
            // 计算出上传进度,调用组件进度条方法
            e.onProgress({
    percent });
        }
    })
        .then(res => {
   
            let curFile = fileList.value.filter(item => item.uid == e.file.uid)[0]
            curFile.response = res.data
            if(res.data.code == 400) {
   
                curFile.status = 'error'
                curFile['error'] = curFile.response.msg
                console.error(`文件${
    curFile.name}上传失败:${
    res.data.msg}`)
            } else {
   
                // 通知组件该文
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Cloud中使用Feign进行文件上传,可以通过以下几个步骤实现: 1. 首先,需要在项目中添加FeignSpring Cloud的依赖,确保正确引入相关的jar包。 2. 接下来,在需要进行文件上传的服务中,创建一个Feign的Client接口,用于定义文件上传的方法。可以使用@RequestParam注解来接收文件参数,并使用@RequestLine注解定义请求方法和路径。例如: ```java @FeignClient(name = "upload-service") public interface UploadServiceClient { @RequestLine("POST /upload") void uploadFile(@RequestParam("file") MultipartFile file); } ``` 3. 然后,在上传文件的服务中,创建一个Controller类,并注入Feign的Client接口。在该Controller中,可以定义一个处理文件上传的接口,并在其中调用Feign的Client接口来实现文件上传。例如: ```java @RestController public class UploadController { @Autowired private UploadServiceClient uploadServiceClient; @PostMapping("/upload") public void upload(@RequestParam("file") MultipartFile file) { uploadServiceClient.uploadFile(file); } } ``` 4. 最后,启动应用程序,通过调用文件上传的接口来上传文件。 需要注意的是,为了使Feign能够正确处理文件的上传,还需要在配置文件中添加相关配置。具体配置内容可以参考Spring Cloud官方文档或相关教程。 总结起来,使用Feign进行文件上传需要创建Feign的Client接口、创建处理文件上传的Controller,并在配置文件中添加相关配置。通过这些步骤,就可以实现在Spring Cloud中使用Feign进行文件上传的功能了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZenSheep

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值