vue中Axios文件上传

这段代码展示了一个使用Vue.js和Axios上传Excel文件的示例。通过在按钮内嵌套输入框和图标,实现了点击图标触发文件选择并上传。关键功能包括beforeUpload()的条件判断,防止重复文件名上传,以及使用FormData进行文件提交,设置请求头和超时时间。
摘要由CSDN通过智能技术生成

核心代码:

<el-button class="file-box" v-if="beforeUpload()" type="text">
    <input style="border: none;" type="file" class="file-btn" @click="e => {e.target.value ='';} "  @change="uploadExcel"/>
    <el-icon class="cla-icon"><Download /></el-icon>导入
</el-button>

注:@click="e => {e.target.value ='';} " 防止重复文件名上传失败

js部分:

function uploadExcel(e:any){
    let file = e.target.files[0];
    let param = new FormData(); //创建form对象
    param.append('file',file);//通过append向form对象添加数据
    let config = {
        headers:{'Content-Type':'multipart/form-data'},//请求头
        timeout:{timeout: 300000},
    }; //添加请求头 //timeout 5分钟

    Axios.post("请求的url",param,config).then((res: any) => {
        if(res.success && res.result.status == 1){
            Context.Info("上传完成!");
        }else {
            Context.Warning(res.error);
            return false;
        }
    }).catch((e:any) => {
        Context.Warning("连接超时!请稍候重试");
    });
}

css部分:

.file-box {
    position: relative;
    display: inline-block;
    overflow: hidden;
    color: rgb(252, 113, 0);
    background-color:#fff;
}

.file-btn {
    top: 0; left: 0;
    position: absolute;
    width: 100%;height: 100%;
    outline: none;
    opacity: 0;
    filter: alpha(opacity=0);
    -moz-opacity: 0;
    -khtml-opacity: 0;
    
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值