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


相关推荐

  • 数据分析法、数据分析方法论总结

    数据分析法、数据分析方法论总结数据分析方法论1、5W2H分析法2、PEST分析法3、逻辑树分析法4、4P营销理论5、用户使用行为理论数据分析法数据分析方法论主要用来指导数据分析师进行一次完整的数据分析,它更多的是指数据分析思路,比如从哪几方面开展数据分析,各方面包含什么内容和指标。 数据分析方法论主要从宏观角度指导如何进行数据分析,它就像一个数据分析前期的规划,指导着后期数据分析工作的开展。 数据分析法则是指具体的分析方法,如常见的对比分析、交叉分析、相关分析、回归分析、聚类分析等数据分析法。数据分析法.

    2022年5月9日
    45
  • 什么是Deeplink?以及Deeplink的原理

    什么是Deeplink?以及Deeplink的原理先说一个日常场景帮大家理解。最近双十一、双十二,不知道大家有没有被亲友们发的某宝、某东、或拼夕夕的各类信息轮番轰炸?小编的亲友群、闺蜜群里常年有这类链接挂着,小红薯的笔记分享,某宝的化妆品、衣服链接分享等等,这一个个的分享链接织成一张张网,真可谓是增加亲友亲密度,快速获取优质好物的利器。这背后有个特别容易忽视却又极其重要的知识点。比如你在社交媒体上分享给翠花一个某App上的精选好店,翠花想要查看有几种操作方式:l如果翠花已经安装了该App,那她只要点开链接就可以跳转到App;l如果…

    2022年6月16日
    105
  • python提取字符串中的数字「建议收藏」

    python提取字符串中的数字「建议收藏」一、isdigit()函数isdigit()函数是检测输入字符串是否只由数字组成。如果字符串只包含数字则返回True否则返回False。dream=”123456″print(dream.isdigit())#返回:Truedream=”123abc456″print(dream.isdigit())#返回:Falsedream=’abcd’print(dream.isdigit())#返回:False二、filter()函数说明:filter()函

    2022年10月10日
    2
  • 我刚刚做了一个艰难的决定「建议收藏」

    我刚刚做了一个艰难的决定「建议收藏」腾讯做了个艰难的决定,如果您电脑里安装了360软件,建议您卸载了它在运行QQ~可口可乐做出了一个非常艰难的决定,如果检测到用户胃里有百事可乐,将自动释放敌敌畏和鹤顶红中国移动做出一个非常艰难的决定,如果方圆百米内检测到有联通用户将使这些用户不间断自动拨打110迅雷做出一个非常艰难的决定,如果检测到用户电脑内安装快车,将拒绝下载教育片宝马做出了一个非常艰难的决定,如果检测到用户使用过奔驰宝马刹车将自动失灵蒙牛做了个艰难的决定,如果监测到用户胃里有伊利牛奶,将自动释放三聚氰胺麦当劳做了个艰难的决定,如果监测

    2022年7月25日
    9
  • Java面对对象编程(超详细)

    Java面对对象编程(超详细)1、成员变量和成员方法成员变量(又叫属性,字段)成员方法2、类和对象的内存分配机制Java内存的结构分析栈:一般存放基本数据类型(局部变量)堆:存放对象(Catcat,数组等)

    2022年7月2日
    26
  • 蓝屏代码0x000000be_电脑蓝屏0*000000ed怎么解决

    蓝屏代码0x000000be_电脑蓝屏0*000000ed怎么解决windows系统相信大家最怕的就是遇到蓝屏的问题了,不太好解决,这不有朋友反馈电脑出现蓝屏代码0x000000BE的问题,电脑此时已经不能用了,那么要怎么解决呢?如果不知道如何操作的话,不妨先试试小编教大家的方法。蓝屏代码0x000000BE是什么意思?0x000000BE错误表示硬件设备的驱动程序试图向只读内存错误地写入数据,这个错误一般是因为硬件设备驱动程序存在BUG或安装不正确引起的。解决…

    2022年10月8日
    2

发表回复

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

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