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. LintCode刷题小记491

    题目: 判断一个正整数是不是回文数. 回文数的定义是,将这个数反转之后,得到的数仍然是同一个数. 样例: 11, 121, 1, 12321 这些是回文数. 23, 32, 1232 这些不是回文数. ...

  2. mysql应用学习-windows(64位)安装和配置mysql(5.6.20)

    下载安装包MySQL Installer 下载地址1:http://dev.mysql.com/downloads/windows/installer/ 说明:官网当前版本 5.6.22:虽然只有32 ...

  3. PAT 1021 Deepest Root

    #include <cstdio> #include <cstdlib> #include <vector> using namespace std; class ...

  4. Spring @Resource, @Autowired and @Inject 注入

    Overview I’ve been asked several times to explain the difference between injecting Spring beans with ...

  5. Required Integer parameter 'XXX' is not present

    1.异常提示: DEBUG o.s.w.s.m.m.a.ServletInvocableHandlerMethod - Error resolving argument [2] [type=java. ...

  6. CentOS 7 学习笔记

    Centos7 命令行   快捷键: 上方向键, 查看上一条命令 Ctrl+C 强制终止程序运行   新版 nmtui 配置网络 旧版 setup(已经没了)   网络接口   ip a = ip a ...

  7. 又到圣诞节,让你的网页下起雪(js特效)

    又到圣诞节,让你的网页下起雪(js特效) 在4年多前,我写过一个特效,就是让你的网页下起雨,它的效果就是在你打开的网站,雨点下满你的屏幕,恩,大概效果如下图: 当然这个效果还有一些附带项,比如风速.风 ...

  8. 003Linux常用命令

    文件操作 01  命令 : list----列出目录信息 命令格式: ls [-选项] [目录] 选项 : -a --all 不忽略以"."开头的隐藏文件 : -d --direc ...

  9. JSP + JavaBean + Servlet实现MVC设计模式

    1.流程图: 2.代码清单 数据库脚本: DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `userid` ) NOT NULL, `name` ...

  10. log4j2简单使用

    http://www.cnblogs.com/lzb1096101803/p/5796849.html 如果是基于的slf4j,看这篇文章去配置 http://blog.csdn.net/neosmi ...