vue-resource+iview上传文件取消上传

子组件:

<template>
<div class="upload-area-div">
<Upload
:type="upType"
class="upload-area"
:show-upload-list="false"
:before-upload="beforeUpload"
:action="uploadUrl">
<slot></slot>
</Upload> <!-- 上传弹窗 -->
<Modal
title="上传"
class-name="flex-center-modal opera-modal not-footer"
v-model="uploadModal"
:mask-closable="false"
@on-cancel="closeUpModal">
<div class="upload-progress">
<p class="file-name">{{fileName}}</p>
<Progress class="modu-progress" :percent="filePercent" :stroke-width="3"></Progress>
<div class="progress-btn">
<Button type="ghost" size="large" class="modu-ghost-btn" v-show="filePercent !== 100" @click="closeUpModal">取消</Button>
<!-- <Button type="primary" size="large" class="modu-primary-btn" v-show="filePercent === 100" @click="onComplete">完成</Button> -->
</div>
</div>
</Modal> <!-- Loading提示 -->
<Spin size="large" fix v-if="loadFlag" class="modu-spin">
<Icon type="load-c" size=18 class="modu-spin-icon-load"></Icon>
<div class="modu-spin-text">Loading</div>
</Spin> </div>
</template>
<script type="text/ecmascript-6">
export default {
props: {
upType: { // 是否允许拖拽上传,select为点击上传
type: String,
default: "drag"
},
uploadUrl: { // 上传文件接口
type: String,
default: "/example/api/file"
},
fileformat: { // 允许上传的文件类型后缀
type: Array,
default: function() {
return ['zip']
}
}
},
data(){
return {
fileName: null, // 文件名字
filePercent: 0, // 上传进度
uploadModal: false, // 上传弹窗
fileUrl:'',
loadFlag: false,
previousRequest: null
}
},
mounted(){ },
methods:{
// 上传之前
beforeUpload(file) {
// console.log("上传之前")
this.loadFlag = true;
this.fileAjaxUpload(file);
return false;
},
// 关闭上传弹窗/取消上传
closeUpModal() {
this.$Message.info('取消上传');
if (this.previousRequest) {
this.previousRequest.abort();
}
this.uploadModal = false;
},
// 上传文件请求
fileAjaxUpload(file) {
let self = this;
this.fileName = file.name;
// 验证上传的文件类型
let index1 = file.name.lastIndexOf(".");
let index2 = file.name.length;
let fileSuffix = file.name.substring(index1+1, index2).toLowerCase();
if (this.fileformat.indexOf(fileSuffix) == -1) { // 类型不符合
this.loadFlag = false;
this.$Message.error("文件格式不正确,请上传zip格式文件");
return false;
}
let fd = new FormData(); // 声明formData()
fd.append('file', file);
this.$http({
url: self.uploadUrl,
method:'post',
body: fd,
before(request) {
self.previousRequest = request;
},
progress: function(progressEvent) { // 上传进度事件
self.loadFlag = false;
if(progressEvent.lengthComputable){
// 属性lengthComputable主要表明总共需要完成的工作量和已经完成的工作是否可以被测量
// 如果lengthComputable为false,就获取不到progressEvent.total和progressEvent.loaded
self.uploadModal = true;
let _percent = Number((progressEvent.loaded / progressEvent.total * 100).toFixed(2));
self.filePercent = _percent < 100 ? _percent : 99;
}
}
}).then((response) =>{
// 上传成功
let resp = response.data;
if (resp.status === 200) {
self.filePercent = 100;
self.fileUrl = resp.data;
self.$emit('onComplete', resp.data);
self.$Message.success('上传成功');
} else {
if (resp.status !== 401) {
self.$Message.error(resp.desc);
}
}
this.uploadModal = false;
}).catch(error =>{
self.loadFlag = false;
self.uploadModal = false;
if (self.previousRequest) {
self.previousRequest.abort();
}
})
}
}
}
</script>

父组件调用:

<m-upload @onComplete="onComplete">
<div class="offLine-war">
<div class="offLine-war-title">{{ fileUrl ? '重新上传' : '上传压缩包' }}</div>
</div>
</m-upload> <script>
import mUpload from '@/components/mUpload/mUpload.vue';
export default {
data() {
return {
fileUrl: ''
}
},
components: {
mUpload: mUpload
},
methods: {
onComplete(fileUrl) {
this.fileUrl = fileUrl;
}
}
}
</script>

vue-resource+iview上传文件取消上传的更多相关文章

  1. iview+axios实现文件取消上传

    iview+axios实现文件取消上传 iview框架的上传文件目前不支持在上传文件的过程中取消上传,结合axios请求可以实现:使用iview的上传和拖拽功能,却使用axios的上传文件功能来实现取 ...

  2. go 发送post请求(键值对、上传文件、上传zip)

    一.post请求的Content-Type为键值对 1.PostForm方式 package main import ( "net/http" "net/url" ...

  3. php 上传文件实例 上传并下载word文件

    上传界面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  4. 异步上传文件,ajax上传文件,jQuery插件之ajaxFileUpload

    http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html 一.ajaxFileUpload是一个异步上传文件的jQuery插件. ...

  5. ajax:html5上传文件,上传之前可以实现本地预览

    本主题主要涉及两个新内容: 1.上传文件(主要使用了FormData) 2.本地预览(主要使用了FileReader) html5的FormData其实就是平时的Form表单,只是html5可以直接新 ...

  6. models渲染字典&form表单上传文件&ajax上传文件

    {# {% for u in teacher_d.keys %}#} {# {% for u in teacher_d.values %}#} {% for k,u in teacher_d.item ...

  7. ASP.NET上传文件,已经上传的大小保存在session中,在另一个页面中读取session的值不行

    想自己做个ASP.NET上传文件时显示进度条的, 按照自己的想法,其实也就是显示每次已经上传的字节,从网上找到一个方法是能够把文件变成流以后再慢慢写入的,我在那个循环写入的时候每循环一次都把已经上传的 ...

  8. Koa - 使用koa-multer上传文件(上传限制、错误处理)

    前言 上传文件在开发中是很常见的操作,今天我选择使用koa-multer中间件来实现这一功能,除了上传文件外,我还会对文件上传进行限制,以及发生上传错误时的处理. 由于原来的 koa-multer 已 ...

  9. ftp上传文件,上传的文件大小是0

    此问题是最近出现,代码和配置完全没改,试过所有的办法,两天了一直都解决不了,用完弃坑. 防火墙.被动模式主动模式,编码,服务端内存,日志,common-net.jar版本问题,服务端配置,nginx配 ...

随机推荐

  1. 《Python编程从入门到实践》_第九章_类

    创建一个简单的类 根据Dog类创建的每个实列都将存储名字和年龄.我们赋予了每条小狗蹲下(sit())和打滚(roll_over())的能力: class Dog(): ""&quo ...

  2. php 项目中自定义日志方法

    在现在项目中之前没有定义日志的方法,每次调试起来很麻烦,经常不能输出参数,只能用写日志的方法,一直用file_put_contents很烦躁,于是用了一点时间,写了这样一个方法: <?php / ...

  3. C#生成二维码的内容

    生成二维码的内容 using QRCoder; // 生成二维码的内容 string strCode = this.txtQr.Text.Trim(); if (string.IsNullOrWhit ...

  4. SpringSecurity 3.2入门(4)登录密码加密

    密码admin 进行MD5 32位加密为21232F297A57A5A743894A0E4A801FC3 增加spring-security.xml文件配置如下 <!-- 认证管理器,配置Spr ...

  5. mvc 中Request[""]与Request.QueryString[""]

    1.Request[""]与Request.QueryString[""]获取不到值时返回null: 2.Request[""]与Reque ...

  6. webpack初步搭建Vue项目

    对文件进行打包 1. cnpm i -D webpack webpack-cli 本地热更新 1. cnpm i -D webpack-dev-server 处理图片资源 url-loader依赖fi ...

  7. 使用HTML5 canvas做地图(2)瓦片以及如何计算的

    上一篇也说到瓦片,我们为什么使用瓦片?这一篇主要是关于如何拼接地图? 下面的一张图,可以一眼明了,地图是如何切割以及拼接的. 瓦片信息 瓦片信息包括切图原点,瓦片大小,格式,分辨率以及分辨率级别等. ...

  8. ahp层次分析法软件

    http://www.jz5u.com/Soft/trade/Other/58808.html 权重计算 归一化 本组当前数 - 本组最小 / 本组最大-本组最小 http://blog.csdn.n ...

  9. Mantis修改“严重性”字段内容

    尝试修改Mantis提交bug时“严重性”字段的内容,将原来的内容修改为A,B,C...等级: 在mantis/config_defaults_inc.php文件中查找$g_severity_enum ...

  10. 数据质量控制软件Q-CHECKER(转)

    随着企业信息化建设的不断深入进行,我们的企业将逐步地发展成为数字化企业.其中作为最基本构成的CATIA数模已经是产品开发制造的唯一依据,CATIA数模的质量就是加工的质量,就是制造的质量,就是生产出的 ...