Vue 使用 formData 方式向后台发送数据

7次阅读

共计 775 个字符,预计需要花费 2 分钟才能阅读完成。

1. 基本使用方式
template
<input class=”file” name=”file” type=”file” accept=”image/png,image/gif,image/jpeg” @change=”update”/>
JavaScript
update (e) {
let file = e.target.files[0]
// console.log(file)
let param = new FormData() // 创建 form 对象
param.append(‘file’, file, file.name) // 通过 append 向 form 对象添加数据
param.append(‘id’, this.$store.state.userId) // 添加 form 表单中其他数据
// withCredentials: true 使得后台可以接收表单数据 跨域请求
const instance = axios.create({
withCredentials: true
})
// url 为后台接口
instance.post(‘url’, param)
.then(this.succ) // 成功返回信息 调用函数 函数需自己定义,此处后面省略
.catch(this.serverError) // 服务器错误 调用对应函数 函数需自己定义,此处后面省略
}
2. 美化 input file 按钮(拓展)
思路:

简单粗暴地隐藏:opacity: 0;
在 <input class=”file”> 元素节点的位置上创建一个好看的元素节点, 比如 img

将 <input class=”file”> 元素的 z 轴变高,使得其覆盖 <img/> :z-index: 5;
因为 <input class=”file”> 是透明的,那么我们就只看见它同 xy 上的好看的 <img />

点击这个好看的 <img /> 其实是点击了它上层的表单

以上思路可以实现点击用户头像,通过表单上传更换头像

正文完
 0