iview upload + iview组件手动上传文件

iview upload组件官方文档

上传文件

1.手动上传文件的页面代码

	<template>
    <div>
        <Upload
                ref="upload"
                multiple
                :max-size="51200"
                :default-file-list="defaultList"
                :show-upload-list="false"
                :on-success="handleSuccess"
                :before-upload = "handleUpload"
                :action="uploadFileUrl"
                :headers="accessToken">
            <Button icon="ios-cloud-upload-outline">上传附件</Button>
        </Upload>
        <div v-for="(item, index) in file">Upload file: {{ item.name }}
            <a href="javascript:;" rel="external nofollow" @click="deleteFile(item.name)">X</a>
            <Button style="margin-left:30px;"
                    size="small"
                    v-if="index === 0"
                    type="primary"
                    @click="uploadFile"
                    :loading="loadingStatus">上传</Button>
        </div>
    </div>
</template>

2.data块的代码

				defaultList:[],
				//上传文件的URL
                uploadFileUrl:uploadFileUrl,
                loadingStatus:false,
                //设置上传的请求头部
                accessToken:"",
                files:[],
                uploadFiles:[]

3.方法

			init(){
				//设置上传的请求头部
                this.accessToken = {
                    accessToken: this.getStore("accessToken")
                };
            }

4.上传前的准备

			handleUpload(file){
                let keyID = Math.random().toString().substr(2);
                files['keyID'] = keyID;
                // 保存文件到总展示文件数组里
                this.files.push(file);
                // 保存文件到需要上传的文件数组里
                this.uploadFiles.push(file);
                // 返回 false 停止自动上传 我们需要手动上传
                return false;
            },

5.删除选错的文件

	deleteFile (name) { 
				// 删除文件
                // 删除展示文件里的当前文件
                this.files = this.files.filter(item => {
                    return item.name != name
                })
                // 删除需要上传文件数据里的当前文件
                this.uploadFiles = this.uploadFiles.filter(item => {
                    return item.KeyID != name
                })
            },

6.点击上传

		uploadFile(){
                this.loadingStatus = true;
                for (let i = 0; i < this.uploadFile.length; i++) {
                    let item = this.file[i];
                    this.$refs.upload.post(item);
                }
                this.loadingStatus = false;
            }	

7.上传成功清除文件列表

		handleSuccess(res,file){
                //上传成功后清空文件列表
                this.file = [];
                this.uploadFile = [];
                console.log(res);
                console.log(file);
            },
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值