vue中上传文件之multipart/form-data
首先在项目里用了拦截器的,由于拦截器会将传递的参数转成对象,所以你i提交的时候会发现multipart/form-data或转变成application/json
其次关于input的文件上传是需要一个非常纯净的axios的,于是我就在main.js里重新挂载了一个axios
//main.js
//自定义
var instance = axios.create({
baseURL:'',
timeout:5000,
headers:{"Content-Type":"multipart/form-data"}
}); Vue.prototype.axios = axios;
Vue.prototype.instance=instance;
在组件中上传代码
var img_file = this.$refs.inputs;
var formData = new FormData(img_file);
var fileObj = img_file.files[0];
console.log(formData)
formData.append("dsc","dsc");
formData.append("file",fileObj);
console.log(fileObj)
this.instance.post(url,formData).then((res)=>{
this.getInit()
})
就这样就可以正常上传文件
在这里顺便也记一下下载后端返回的文件资源
axios.get(url, {
responseType: 'blob', //重要
}).then(response => {
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
let fname = 'report.pdf';
link.href = url;
link.setAttribute('download', fname);
document.body.appendChild(link);
link.click();
})
url为后台返回的资源地址,这里会报跨域的错,找后台设置一下就好了
注:测试的时候发现在火狐浏览器上会报错 Argument 1 of FormData.constructor does not implement interface HTMLFormEle
自需要做如下更改就好
//var img_file = this.$refs.inputs;
//var evt=window.event || el;
//console.log(evt)
var img_file = evt.target.files[0];
console.log(img_file)
var formData = new FormData(document.getElementById('uploadForm')[0]);
//var fileObj = img_file.files[0];
var fileObj = img_file
console.log(formData)
formData.append("dsc","dsc");
formData.append("file",fileObj);
console.log(fileObj)
this.instance.post(url,formData).then((res)=>{
this.getInit()
})
vue中上传文件之multipart/form-data的更多相关文章
- vue中上传文件相同文件名没反应
vue项目中会遇到上传文件的需求,jquery会有一些插件很方便,如果不使用插件网上的方法没有太容易的而且很多是原生JS或者基于jQuery操作dom结构的.那么在vue项目中如何实现呢,还有如何模拟 ...
- vue 上传文件 和 下载文件
Vue上传文件,不必使用什么element 的uplaod, 也不用什么npm上找的个人写的包,就用原生的Vue加axios就行了, 废话不多说,直接上代码:html: <input type= ...
- vue 上传文件 和 下载文件 面试的时候被问到过
Vue上传文件,不必使用什么element 的uplaod, 也不用什么npm上找的个人写的包,就用原生的Vue加axios就行了, 废话不多说,直接上代码:html: <input type= ...
- 使用curl 上传文件,multipart/form-data
使用curl 上传文件,multipart/form-data 1. 不使用-F,curl内置multipart/form-data功能: 2. 文件内容与真实数据无关,用abc代替数据,依然可以上传 ...
- form表单上传文件使用multipart请求处理
在开发Web应用程序时比较常见的功能之一,就是允许用户利用multipart请求将本地文件上传到服务器,而这正是Grails的坚固基石——spring MVC其中的一个优势.Spring通过对Serv ...
- axios+Vue上传文件显示进度
一,前言 最近在用Vue,然后上传文件时需要显示进度,于是网上搜了一下,经过自己实测终于也弄明白了 二,效果 三,代码 HTML代码 <div id="app"> &l ...
- element-ui中上传文件upload
<el-upload class="upload-demo" name="targetFile" ref="upload" :with ...
- Vue上传文件:ElementUI中的upload实现
一.上传文件实现 两种实现方式: 1.直接action <el-upload .利用before-upload属性 此种方式有个弊端,就是action是必选的参数,那么action如果和pos ...
- vue上传文件
<div> <input type="file" class="file" name="file" @change=&qu ...
随机推荐
- Pyqt walk 在Windows查找文件
在任意目录下查找需要的文件如何操作呢? 其实很简单, WIN+E [桌面计算机]- 右上角“搜索 计算机” 这个就是Windows自带的文件搜索功能.自己做一个文件搜索的应该应该也挺好玩的. 知识要点 ...
- entityframework单例模式泛型用法
public class yms_Entity<T> where T :DbContext { private static T _instance; public static read ...
- 【AtCoder】【模型转化】【二分答案】Median Pyramid Hard(AGC006)
题意: 给你一个排列,有2*n-1个元素,现在进行以下的操作: 每一次将a[i]替换成为a[i-1],a[i],a[i+1]三个数的中位数,并且所有的操作是同时进行的,也就是说这一次用于计算的a[], ...
- HTML(五)
HTML5新结构标签 h5新增的主要语义化标签如下: 1.header 页面头部.页眉2.nav 页面导航3.article 一篇文章4.section 文章中的章节5.aside 侧边栏6.foot ...
- __x__(23)0907第四天__浏览器默认样式
浏览器默认样式: 为了美观,浏览器为了在页面没有样式时,也可以有一个较好的显示效果,默认设置若干 margin,padding. 作为开发人员,在CSS编写最初,一般都会清除默认样式, ...
- jquery 实现tab切换
大家都知道 使用QQ的时候需要输入账号和密码 这个时候一个TAB键盘就可以实现切换到下一个输入框里 具体是怎么实现的呢 请看代码 <!DOCTYPE html> <html lang ...
- 微信小程序页面带参数跳转
页面传递参数的方式 data-para js获取参数
- ubus socket always in connecting status
When we try to transplant ubus to uclinux, ubusd can't run but "ubus list" will hang up. 1 ...
- spark-sql自定义函数UDF和UDAF
1 UDF对每个值进行处理: 2 UDAF对分组后的每个值处理(必须分组) SparkConf sparkConf = new SparkConf() .setMaster("local&q ...
- linux自定义开机自启多个服务的脚本
linux服务器重启后,每次要启动redis.ftp.tomcat等应用总是很麻烦,于是写了一个自定义脚本,在开机或重启的时候,自动启动多个服务.应用. 很简单,写脚本.设置开机启动. 第一步.准 ...