vue-resource+iview上传文件取消上传
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上传文件取消上传的更多相关文章
- iview+axios实现文件取消上传
iview+axios实现文件取消上传 iview框架的上传文件目前不支持在上传文件的过程中取消上传,结合axios请求可以实现:使用iview的上传和拖拽功能,却使用axios的上传文件功能来实现取 ...
- go 发送post请求(键值对、上传文件、上传zip)
一.post请求的Content-Type为键值对 1.PostForm方式 package main import ( "net/http" "net/url" ...
- php 上传文件实例 上传并下载word文件
上传界面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
- 异步上传文件,ajax上传文件,jQuery插件之ajaxFileUpload
http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html 一.ajaxFileUpload是一个异步上传文件的jQuery插件. ...
- ajax:html5上传文件,上传之前可以实现本地预览
本主题主要涉及两个新内容: 1.上传文件(主要使用了FormData) 2.本地预览(主要使用了FileReader) html5的FormData其实就是平时的Form表单,只是html5可以直接新 ...
- models渲染字典&form表单上传文件&ajax上传文件
{# {% for u in teacher_d.keys %}#} {# {% for u in teacher_d.values %}#} {% for k,u in teacher_d.item ...
- ASP.NET上传文件,已经上传的大小保存在session中,在另一个页面中读取session的值不行
想自己做个ASP.NET上传文件时显示进度条的, 按照自己的想法,其实也就是显示每次已经上传的字节,从网上找到一个方法是能够把文件变成流以后再慢慢写入的,我在那个循环写入的时候每循环一次都把已经上传的 ...
- Koa - 使用koa-multer上传文件(上传限制、错误处理)
前言 上传文件在开发中是很常见的操作,今天我选择使用koa-multer中间件来实现这一功能,除了上传文件外,我还会对文件上传进行限制,以及发生上传错误时的处理. 由于原来的 koa-multer 已 ...
- ftp上传文件,上传的文件大小是0
此问题是最近出现,代码和配置完全没改,试过所有的办法,两天了一直都解决不了,用完弃坑. 防火墙.被动模式主动模式,编码,服务端内存,日志,common-net.jar版本问题,服务端配置,nginx配 ...
随机推荐
- LaTex 2
LaTex 入门 此时是否安装成功 如果安装成功了LaTeX, 那么在计算机上会多出来LaTeX的编译器, LaTex Live 安装包在计算机上安装了多个不同的编译器, 有latex, xelate ...
- CF 303C——Minimum Modular——————【剪枝】
Minimum Modular time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- POJ 2528——Mayor's posters——————【线段树区间替换、找存在的不同区间】
Mayor's posters Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Sub ...
- Python 函数运行时更新
Python 动态修改(运行时更新) 特性 实现函数运行时动态修改(开发的时候,非线上) 支持协程(tornado等) 兼容 python2, python3 安装 pip install realt ...
- WPF的依赖项属性
WPF的依赖项属性 属性与事件是.NET抽象模型的核心部分.WPF使用了更高级的依赖项属性(Dependency Property)功能来替换原来.NET的属性,实现了更高效率的保存机制,还添加了附加 ...
- Mysql只Union用法
MYSQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果. 举例说明: select * from table1 u ...
- 【学习笔记】使用SQLyog连接MySQL数据库
一.使用SQLyog创建数据库用来管理学生信息 #创建数据库student DROP DATABASE IF EXISTS Myschool; CREATE DATABASE Myschool; #在 ...
- JavaWeb技术
1.简介 Java Web是用Java技术来解决相关web互联网领域的技术总和.web包括:web服务器和web客户端两部分.Java在客户端的应用有java applet,不过使用得很少,Java在 ...
- struts2返回结果类型
在action下还有result标签 1.result不只有name,其实还有type result返回类型在struts-default.xml默认的配置文件中有定义,可以看到有result-typ ...
- Hibernate=====HQL实用技术
Hibernate支持三种查询语言:HQL查询.Criteria查询和原生SQL查询 HQL(hibernate Query Language,hibernate查询语言)是一种面向对象查询语言,其中 ...