首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >vue上传文件流

vue上传文件流

作者头像
全栈程序员站长
发布2022-11-03 15:54:42
发布2022-11-03 15:54:42
1.3K0
举报

创建formData方法,把文件流以及所有需要上传的数据通过formData.append传入formData中,上传请求中的data中只需要放一个formData就可以了。

(此处request为封装的请求方法,省事可以不封装)

代码语言:javascript
复制
import axios from "axios"

export function request(config){
  const require = axios.create({
    method:config.method || 'post',
    baseURL:'/api/ebook/lan',//你的接口
    timeout:10000,
    headers:config.method ||{'Content-Type': 'application/json;charset=utf-8'},
    data:config.data,
    withCredentials:true
  })

  return require(config)
}

主菜:

代码语言:javascript
复制
<template>
<div class="flex">
<button type="text" @click="dialogFormVisible = true" class="addBtn">添加</button>
<el-dialog title="数据添加" :visible.sync="dialogFormVisible" width="600px" :before-close="close">
<el-form :model="partyFlag" ref="partyFlag">
<el-form-item prop="description" label="姓名或描述:" :label-width="formLabelWidth" :rules="[{ required: true, message: '不能为空'},{ type:'' ,message: '请输入非数字类型'}]">
<el-input type="description" autocomplete="off" placeholder="请输入" v-model.number="partyFlag.description"></el-input>
</el-form-item>
<el-form-item label="文件:" :label-width="formLabelWidth" :rule="{ required: true, message: '请上传图片' }">
<div class="upload">
<input type="file" autocomplete="off" placeholder="选择上传文件" class="uploadFile" @change="File"></input>
<div class="fileNameShow">{
{file.name}}</div>
</div>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="close">取 消</el-button>
<el-button type="primary" @click="uploadBtn">确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {request} from "../../../../network/request";
export default {
name: "dataAdd",
data(){
return{
file:[name=''],
dialogFormVisible:false,
formLabelWidth: '120px',
// 表单验证验证的必须是数组
partyFlag:{
imgPath:'',
description:''
},
}
},
methods:{
File(event){
this.file = event.target.files[0]
},
uploadBtn() {
this.$refs.partyFlag.validate((valid) => {//表单验证
if (valid) {
// 写接口
if(this.file64 === '') {
this.$message('请先上传文件')
}else {
let formData = new FormData()//创建formdata来存文件
let file = this.file
formData.append("file",file)//存入文件
formData.append('nId',0)//存入需要和文件一起上传的数据
request({
url:'/partyFlag/addData.dao',//写你的路径
data:formData//只需要上传formdata就行了
}).then(res =>{
this.dialogFormVisible = false
this.partyFlag.imgPath = ''
this.partyFlag.description = ''
this.file64 = ''
this.file = []
this.$message('添加成功')
}).catch(err =>{
this.$message('请求或者网络异常')
})
}
} else {
return false;
}
});
},
close(){
this.dialogFormVisible=false
this.partyFlag.imgPath = ''
this.partyFlag.description = ''
this.file64 = ''
this.file = []
}
},
}
</script>
<style scoped>
.flex{
flex:3.5;
}
.addBtn{
width: 80px;
height: 30px;
background-color:#7EC0EE;
border-radius: 0;
border-width: 0;
color: #FFFFFF;
font-size: 12px;
margin: 23px 0 15px 30px;
}
.upload{
width: 400px;
height: 90px;
border: solid 1px #EBEBEB;
}
.uploadFile{
width: 100px;
height: 90px;
opacity: 0;
}
.fileNameShow{
position: absolute;
top: 5px;
left: 20px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width:350px;
}
</style>

注:这种方法是上传文件的如果上传的文件的同时也需要上传一个参数的话,就把参数和文件一起放在formdata中,然后只上传formdata就可以了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/181182.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档