vue 使用 axios 上传文件 — FormData

vue 使用 axios 上传文件 — FormData    在此主要介绍如何使用formData对象上传单文件和多文件,FormData就是XMLHttpRequestLevel2新增的一个对象,利用它来提交表单、模拟表单提交,当然最大的优势就是可以上传二进制文件。    过多介绍不说,过多的煽情语句不说,直接来来干活,希望对广大博友有所帮助。也希望各位大神不吝赐教一:前台上传文件的表单和响应函数<!–文件上传…

大家好,又见面了,我是你们的朋友全栈君。

       在此主要介绍 如何使用 formData 对象上传单文件和多文件,FormData 就是 XMLHttpRequest Level 2 新增的一个对象,利用它来提交表单、模拟表单提交,当然最大的优势就是可以上传二进制文件。

       过多介绍不说,过多的煽情语句不说,直接来来干活,希望对广大博友有所帮助。也希望各位大神不吝赐教


一: 前台上传文件的表单和响应函数

<!--文件上传表单--> <form>
  <input type="text" value="" v-model="name" placeholder="请输入用户名">
  <input type="text" value="" v-model="age" placeholder="请输入年龄">
  <input type="file" @change="getFile($event)">
  <input type="file" @change="getFile2($event)">
  <button @click="submit($event)">提交</button>
</form>

表单可以根据自己需要选择合适的表单,我在此选用的原生表单。

vue 定义文件数据类型:

data () {
  return{
    //文件  file: '',
    file2: '',
  }
},

表单按钮的响应函数

getFile(event) {
  this.file = event.target.files[0];
  console.log(this.file);
},
getFile2(event) {
  this.file2 = event.target.files[0];
  console.log(this.file2);
},

上传单文件和多文件其实都是一样,主要的区别在后台接受文件形式和前台如何向后台传递数据

主要区别在 submit 响应函数中。

单文件例子:

submit(event) {
  event.preventDefault();//取消默认行为  //创建 formData 对象  let formData = new FormData();
  // 向 formData 对象中添加文件  formData.append('file',this.file);
  
  http.uploadFile("taskManage/uploadFile2",formData).then(function (response) {
    console.log("res: ",response);
  })
},

多文件例子:

submit(event) {
  event.preventDefault();//取消默认行为  //创建 formData 对象  let formData = new FormData();
  // 向 formData 对象中添加文件  formData.append('file',this.file);
  formData.append('file',this.file2);
  
  http.uploadFile("taskManage/uploadFile2",formData).then(function (response) {
    console.log("res: ",response);
  })
},

       看到这里是不是感觉很搞笑,单文件和多文件的区别竟然在于向 formData 中添加了多少个文件。其实技术就是这样,玩过了,就觉得很好玩越来越有兴趣。

        注: http.uploadFile 是我自己封装的方法,用来上传文件的,为了防止文章没有针对性,就分开写了。有需要的,请查阅:http://blog.csdn.net/nimoyaoww/article/details/79401346

        哪里理解有误,欢迎各位大神不吝指教。

2:后台接受文件

控制器主要有一个全局的注解:

@RequestMapping("taskManage")

单文件的格式:

/**  * 文件接收控制器  */ @PostMapping("uploadFile")
public Object multipleSave(@RequestParam("file") MultipartFile file){
    logger.info("上传的文件:",file);
    logger.info("上传的文件");
    return null;
}

多文件格式:

    后台接受方式有两种,两种都有不同的通途。

接受的文件个数为有限个时:

/**  * 文件接收控制器  */ @PostMapping("uploadFile")
public Object multipleSave(@RequestParam("file") MultipartFile file,@RequestParam("file2") MultipartFile file2){
    logger.info("上传的文件:",file);
    logger.info("上传的文件2:",file2);
    logger.info("上传的文件");
    return null;
}

接受文件个数为无限个时:

@PostMapping("uploadFile")
public Object multipleSave(@RequestParam("file") MultipartFile[] file){
    logger.info("上传的文件:",file);
    logger.info("上传的文件");
    return null;
}
利用数组的格式接收多文件,利用 for 循环就可以取出所有的文件,这里就不做一一解释了。    

    方法都已经亲测,希望对广大博友有丝毫的帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148180.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月29日 下午12:36
下一篇 2022年6月29日 下午12:36


相关推荐

  • C++:cin、cin.getline()、getline()的用法

    C++:cin、cin.getline()、getline()的用法主要内容 1 cin 用法 2 cin getline 用法 3 getline 用法 3 注意的问题 nbsp 一 cin gt gt 用法 1 输入一个数字或字符 include lt iostream gt usingnamespa main inta b cin gt gt a gt gt b cout lt lt a b lt

    2026年3月19日
    2
  • 推荐书籍:FFmpeg从入门到精通

    推荐书籍:FFmpeg从入门到精通本书是一本介绍FFmpeg的实战技术指南,全书共10章,分为两个部分。第一部分部分(第1~7章)为FFmpeg的命令行使用篇,介绍了FFmpeg的基础组成部分、FFmpeg工具使用、FFmpeg的封装操作、FFmpeg的转码操作、FFmpeg的流媒体操作、FFmpeg的滤镜操作、FFmpeg的设备操作。第二部分(第8~10章)为FFmpeg的API使用篇,介绍了FFmpeg封装部分的API使用操作、FFmpeg编解码部分的API使用操作,FFmpeg滤镜部分的API使用操作,相关操作均以实例方式进行

    2022年6月26日
    25
  • 什么是语义分割_词法分析语法分析语义分析

    什么是语义分割_词法分析语法分析语义分析文章目录引言1混淆矩阵2语义分割PA:像素准确率CPA:类别像素准确率MPA:类别平均像素准确率IoU:交并比MIoU:平均交并比(改进,先求IoU,再求MIoU,这里有误)3综合实例步骤一:输入真实、预测图片步骤二:求出混淆矩阵步骤三:评价指标计算PACPAMPAIoUMIoU4测试代码参考引言语义分割是像素级别的分类,其常用评价指标:像素准确率(PixelAccuracy,PA…

    2022年8月21日
    9
  • java lang illegalargument_java property

    java lang illegalargument_java propertyErrorstartingApplicationContext.Todisplaytheconditionsreportre-runyourapplicationwith’debug’enabled.2021-12-2922:52:35.557ERROR[cloud-payment-service,,,]13720—[restartedMain]o.s.b.d.LoggingFailureAnalysisReporter:************…

    2025年12月1日
    7
  • 一些使用4o的方式

    一些使用4o的方式

    2026年3月15日
    1
  • UML–构件图详解

    UML–构件图详解构件图在 UML 中是通过构件图和部署图来表示单元的 它们描述了系统实现方面的信息 使系统具有可重用性和可操作性 构件在构件图中 将系统中可重用的模块封装成为具有可替代性的物理单元 我们称之为构件 它是独立的 是在一个系统或子系统中的封装单位 提供一个或多个接口 是系统高层的可重用的部件 构件作为系统中的一个物理实现单元 包括软件代码 包括源代码 二进制代码和可执行文件 或者相应组成部分 例如

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号