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


相关推荐

  • idea tomcat catalina log乱码_xshell查看日志乱码怎么解决

    idea tomcat catalina log乱码_xshell查看日志乱码怎么解决以前一直使用Eclipse,现在试用IDEA,遇到一些坑,通过网上的答案基本都解决了,但有些答案不好,比如这个问题。1、原因分析Tomcat运行JavaWeb的程序,在IDEA控制台中输出显示,我们一般都是用UTF8编码。从Java源码到IDEA控制台,大致分为几个阶段:1)源码:即*.java原文件,是纯文本文件。编码方式在IDEA的Settings>Editor>FileEncodings中设置;2)…

    2022年9月26日
    0
  • HandlerSocket_handler的使用

    HandlerSocket_handler的使用HandlerSocket的原理http://www.mysqlops.com/2011/10/19/handlersocket-principle.htmlHandlerSocket的性能测试http://www.mysqlops.com/2011/10/20/handlersocket-perf.htmlHandlerSock

    2022年8月24日
    3
  • 前端基础知识1

    前端基础知识1’usestrict’varname=’Jay’varperson={name:’Wang’,pro:{name:’Michael’,getName:function(){returnthis.name;}}}console.log(person.pro.getName());varpepole=person.pro.getName;console

    2022年5月13日
    87
  • BatchShell软件—-Xshell与Ansible结合

    BatchShell软件—-Xshell与Ansible结合

    2021年6月3日
    104
  • 允许跨域访问_vue浏览器清空跳转记录

    允许跨域访问_vue浏览器清空跳转记录from http://www.cnblogs.com/fengyuqing/p/javascript_xmlhttp.html在非IE下,使用XMLHttpRequest不能跨域访问,除非要访问的网页设置为允许跨域访问。将网页设置为允许跨域访问的方法如下: JavaResponse.AddHeader(“Access-Control

    2022年10月1日
    0
  • clion激活_最新在线免费激活

    (clion激活)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月29日
    74

发表回复

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

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