vue-Ctrl+v粘贴上传剪切板图片

2 篇文章 0 订阅
// template
<el-button size="mini" @click="pasteImgUrl" class="pasteBtn" :disabled="pasteBtnDisabled">粘贴截图</el-button>
<el-button size="mini" @click="cancelImgUrl" class="cancelBtn">取消</el-button>

//methods
// 截图粘贴上传缩略图
        pasteImgUrl(){
            var _this = this
            _this.$message({
                type: 'info',
                message: '请按CTRL+V自动上传缩略图',
                duration: 1500
            });
            _this.pasteBtnDisabled = true
            // 监听 ctrl+v键盘事件
            pasteEvent = function (e) {
                if ( !(e.clipboardData && e.clipboardData.items) ) {
                    return;
                }
                for (var i = 0, len = e.clipboardData.items.length; i < len; i++) {
                    var item = e.clipboardData.items[i];
                    if (item.kind === "string") {
                        item.getAsString(function (str) {
                            // console.log(str);
                        })
                    } else if (item.kind === "file") {
                        var f= item.getAsFile();
                        let param = new FormData()
                        param.append('file', f)
                        let message = _this.$message({
                            type: 'info',
                            message: '上传中...',
                            duration: 0
                        });
                        _this.$http.post(自己的上传地址, param, {
                            headers: { "Content-Type": "multipart/form-data" },
                            transformRequest: [
                                function(d) {
                                    return d;
                                }
                            ]
                        }).then(res => {
                            if (res.data.code == 200) {
                                _this.subjoinForm.imgUrl = res.data.data.url;
                                message.close()
                                _this.$message({
                                    type: 'success',
                                    message: '上传成功!',
                                    duration: 1000
                                });
                                _this.pasteBtnDisabled = false
                                // 注销当前粘贴的监听
                                document.removeEventListener('paste', pasteEvent)
                            }else{
                                _this.$message({ type: "error", message: '上传失败!' })
                            }
                        });
                    }
                }
            }
            document.addEventListener('paste', pasteEvent)
        },
        // 取消缩略图
        cancelImgUrl(){
            document.removeEventListener('paste', pasteEvent)
            this.pasteBtnDisabled = false
            this.subjoinForm.imgUrl = ''
        },

原文地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值