el-upload手动上传,自定义axios方法上传文件

 今天在使用element的文件模块时,使用了手动上传的方法,官网上的示例是直接使用this.$refs.upload.submit()直接请求后台,我测试过了,是可以获取到数据的,但是我不知道这个方法如何处理后台传过来的参数,就产生了一个自定义axios方法上传文件的想法,这里面的核心主要是要获取到上传的文件对象。
  1. 模版部分
  <el-upload
            class="upload-demo"
            ref="upload"
            :on-preview="handlePreview"
            :on-remove="handleRemove"
            :auto-upload="false">
        <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
        <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
        <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
    </el-upload>
  1. 自定义方法上传文件
 submitUpload() {
                //this.$refs.upload.submit();
                let file = this.$refs.upload.uploadFiles.pop().raw;//这里获取上传的文件对象
                let formData = new FormData();
                formData.append("file",file);
                this.$axios.post("/upload",formData).then(res=>{
                    console.log(res.data);
                }),
  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Vue 3中使用el-upload组件可以通过自定义action属性来指定上传文件的后端接口,但是它默认的下载方法是直接调用浏览器的下载功能。如果需要自定义下载方法,可以在el-upload的on-success事件中获取到上传成功后的文件信息,并使用自定义的下载方法进行下载。 具体步骤如下: 1. 在el-upload组件中添加on-success事件和ref属性,ref属性用于在组件中获取el-upload实例。 ```html <el-upload action="/api/upload" :on-success="handleSuccess" ref="upload" > <el-button>上传文件</el-button> </el-upload> ``` 2. 在组件的methods中定义handleSuccess方法,在该方法中获取上传成功后的文件信息,并存储到data中。 ```js methods: { handleSuccess(response, file, fileList) { this.fileList = fileList; this.fileUrl = response.data.url; // 上传成功后的文件地址 } } ``` 3. 在需要下载文件的地方定义自定义的下载方法,例如使用axios进行下载。 ```js methods: { downloadFile() { axios.get(this.fileUrl, { responseType: 'blob' }) .then(response => { const url = window.URL.createObjectURL(new Blob([response.data])); const link = document.createElement('a'); link.href = url; link.setAttribute('download', 'filename'); // 设置文件名 document.body.appendChild(link); link.click(); }); } } ``` 4. 在需要调用下载方法的地方获取el-upload实例,并使用其$refs属性获取上传成功后的文件信息,并调用自定义的下载方法进行下载。 ```js methods: { handleSuccess(response, file, fileList) { this.fileList = fileList; this.fileUrl = response.data.url; // 上传成功后的文件地址 }, downloadFile() { const uploadInstance = this.$refs.upload; const file = uploadInstance.fileList[0]; // 获取上传成功后的文件信息 if (file) { this.fileUrl = file.url; // 获取文件地址 // 调用自定义的下载方法 this.downloadFile(); } } } ``` 这样就可以在Vue 3中使用el-upload组件,并自定义下载方法了。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值