项目中上传文件,先本地上传,最后再执行真正上传

在Vue项目中,为了优化服务器性能和节省空间,文件上传时可先在本地存储,待用户最后确认提交时再上传。示例展示了只支持.xlsx和.xls文件的上传,用户选择文件后显示文件名,点击提交时通过axios调用接口上传文件。此方法有效减少了不必要的文件上传操作。
摘要由CSDN通过智能技术生成

在vue项目中,有上传文件的需求时,先进行本地存储,等最后确定提交后,调用接口时再进行真正上传文件,可以减小服务器压力,减少占用空间,以避免多次重复上传。

示例效果为:

仅可支持.xlsx, .xls上传,点击上传出现文件名称(本地存储),最后确认提交时真正提交给后台

<el-form-item >
    <div><span style="color:#F56C6C;margin-right:4px;">*</span>请选择导入的Excel文件:</div>
    <div style="display:flex;">
         <div @click="handelup">
             <el-button type="primary">选择文件</el-button>
             <input style="display:none;" type="file" accept=".xlsx, .xls" ref="uploadFile" id="uploadFile" v-on:change="uploadFile">
         </div>
         <el-input v-model.trim="form.fileName" placeholder="未选择任何文件" disabled style="width:300px;margin-left: 16px;" ></el-input>
         <a href="https://xxx.xlsx" style="margin-left:10px;">
              <span class="underLine">下载模板</span>
         </a>
     </div>
</el-form-item>

import axios from "axios";

handelup(e) {
    this.$refs.uploadFile.dispatchEvent(new MouseEvent("click"));
},
uploadFile(e){
    this.form.fileName = e.target.files[0].name;
    // 获取待上传的文件对象
    let file = e.target.files[0];
    // 声明一个读取文件对象
    let reader = new FileReader();
    // 开始读取文件内容
    reader.readAsDataURL(file);
    // 读取操作结束时触发
    reader.onloadend = ev => {
        // 赋值给vue对象属性
        this.form.multipartFile = e.target.files[0];
    };
},
submitForm(){
    var formData = new FormData();
    formData.append("file", this.form.file);
    let config = {
        headers: {
            "Content-Type": "multipart/form-data"
        }
    };
    axios
    .post(accountDetailedProcessBacklog, formData, config)
    .then(res => {
         if (res.data.data.status == 1) {
              this.$message({
                message:`${this.action}成功`,
                type: 'success'
              });
            }else{
              this.$message({
                message:res.data.data.msg,
                type: 'error'
              });
            }
          })
          .catch(err => {});
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值