element el-upload 粘贴上传图片

9 篇文章 0 订阅

对form中的某一个el-form-item添加 @paste.native 事件,事件绑定方法名 handlePaste也可以在其他控件中添加事件监听,这里在当前form-item 这个块使用了,只有当你点击目标区域时才有效。

<el-form-item label="备注图片" @paste.native="handlePaste">
							<div style="color: red;">可粘贴上传</div>
							<div class="imgs">
								<div class="i" v-for="(item, index) in addFormData.imgs" :key="index">
									<img :src="item" alt="">
									<i class="el-icon-error" @click="addFormData.imgs.splice(index, 1)"></i>
								</div>
								<el-upload class="avatar-uploader" :action="uploadAction" :show-file-list="false"
									multiple ref="upload" :headers="uploadHeaders" 
									:on-success="handleUploadSuccess">
									<i class="el-icon-plus avatar-uploader-icon"></i>
								</el-upload>
							</div>
						</el-form-item>

通过ref来调用自身的方法比如 handlerStart,handlerSuccess这些都是el-upload身上的方法,这里的ref为 upload。

handlePaste(e) {
			let now = new Date().getTime()
			if (now - this.timeStep < 500) {
				this.$message.warning('粘贴速度太频繁!请稍后再试');
				return
			}
			this.timeStep = now
			var clipboardData = e.clipboardData; // IE
			if (!clipboardData) {
				//chrome
				clipboardData = e.originalEvent.clipboardData;
			}
			var items = '';
			items = (e.clipboardData || window.clipboardData).items;
			let file = null;
			if (!items || items.length === 0) {
				this.$message.error('当前浏览器不支持粘贴本地图片,请打开图片复制后再粘贴!');
				return;
			}
			// 搜索剪切板items
			for (let i = 0; i < items.length; i++) {
				// 限制上传文件类型
				if (items[i].type.indexOf('image') !== -1) {
					file = items[i].getAsFile();
					break;
				}
			}
			//判断是否超出上传数量
			// if (this.addFormData.imgs.length >= this.limit) {
			// 	this.$message.error(`上传文件数量不能超过 ${this.limit} 个!`); // 图片数量超出
			// 	return
			// }
			if (file) {
				this.$refs.upload.handleStart(file); // 将粘贴过来的图片加入预上传队列
				this.$refs.upload.submit(); // 提交图片上传队列
			}else{
				this.$message.error("粘贴内容非图片");
			}
		},
		//图片上传成功
		handleUploadSuccess(response, file, fileList) {
			this.addFormData.imgs.push(response.url)
		},

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值