完成上传操作,思路如下:
1、页面上写一个type="file"的input标签,是隐藏的,需要绑定一个ref属性
html:
<input type="file"
name="file"
ref="file"
@change="handleFileChange"
style="display:none">
javaScript:
handleFileChange(e) {
let file = e.target.files[0]
this.fileName = file.name
this.file = file
}
2、页面上有一个按钮,点击按钮让它去触发input标签的方法
html:
<el-button size="small"
type="primary"
@click="handleUploadFile">上传文件</el-button>
javaScript:
handleUploadFile(){
this.$refs.file.click()
}
3、由于发送ajax请求带文件过去,文件则会变成文档的字符节流
$.ajax({
type: "post",
url: "接口地址",
data: formdata,
dataType: 'json',
contentType: false, // 不用设置Content-Type请求头
async: true, //默认是true:异步,false:同步。
success: function (data) {
callback(data); //成功调用回滚
alert("成功~~~")
},
error: function (data) {
alert("出现异常~~~")
},
});
4、因此会用到FromData来完成上传
javaScript:
handleImport() {
let formData = new FormData()
formData.append('devices', this.file)
this.$api.asset.importDevice(formData).then(response => {
if (response.success) {
// 判断成功
this.$message.success('导入成功')
} else {
// 判断失败
this.$message.error(response.message)
}
})
}