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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2015第14周一

    2015第14周一

    2021年9月4日
    46
  • bytebuffer是什么_byte与bit

    bytebuffer是什么_byte与bit一.ByteBuffer   ByteBuffer是JDKNIO中提供的Java.nio.Buffer,在内存中预留指定大小的存储空间来存放临时数据,其他Buffer的子类有:CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer和ShortBuffer 1.Buffer   ByteBuffer继承…

    2022年9月2日
    5
  • spring spel表达式_substring sql

    spring spel表达式_substring sqlSpEL表达式简介用法1.注解@Value2.XML配置3.Expression表达式语法简介SpringExpressionLanguage(缩写为SpEL)是一种强大的表达式语言。在Spring产品组合中,它是表达式计算的基础。它支持在运行时查询和操作对象图,它可以与基于XML和基于注解的Spring配置还有bean定义一起使用。由于它能够在运行时动态分配值,因此可以为我们节省大量Java代码。依赖:在这里插入代码片用法SpEL有三种用法,一种是在注解@Value中

    2025年8月28日
    5
  • 坚果课堂回顾:团队项目管理&SOP打造顶尖执行力

    坚果课堂回顾:团队项目管理&SOP打造顶尖执行力【摘要】:已经非常努力高效的利用时间了,可为什么事情还是做不完?todolist产生的速度,超过能处理完成事情的速度? 作为知识密集型行业的代表人群,律师行业始终在探索如何高效利用时间,在有限的时间内创造出更多价值。在律师行业效率变革的驱动下,秉承效率至上的云盘服务提供商坚果云,一直致力于助力律师行业找到高效工作方式。在6月12日…

    2022年5月22日
    40
  • java设置定时器_java定时器的使用(Timer)

    java设置定时器_java定时器的使用(Timer)定时器是java的一大特色,本篇文章我们会了解定时器的配置有哪些方式,下面就跟小编一起看看吧。实例packagecom.wxltsoft.tool;importorg.junit.Test;importjava.util.Calendar;importjava.util.Date;importjava.util.Timer;importjava.util.TimerTask;/***…

    2022年9月17日
    4
  • 去色怎么用_国际通用的最简单的救生包包括什么

    去色怎么用_国际通用的最简单的救生包包括什么2019独角兽企业重金招聘Python工程师标准>>>…

    2022年10月6日
    1

发表回复

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

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