图片上传,图片拖拽上传

html部分

<input ref="fileinput" type="file" style="position:absolute;top:0;left:0; clip:rect(0 0 0 0);" accept="image/png, image/jpeg, image/gif, image/jpg" @change="uploadImg($event)">
            <div class="contain-upimg"  v-if="!imgList.length">
                <div class="upload"></div>
                <div class="word">图片仅支持 png、jpg、jpeg、bmp 格式点击、或将图片拖拽到此处</div>
                <div style="width: 88px;height: 32px;position:relative;left:50%;transform: translateX(-50%);margin-top:25px">
                    <Button class="button" type="primary" @click="upload">上传图片</Button>
                </div>
            </div>

js部分

// 选择图片上传
        upload () {
            if (this.vipType === 0) {
                this.showTip = true
            } else {
                this.$refs.fileinput.click()
            }
        },
// 图片确定
        uploadImg (e) {
            const file = e.target.files[0]
            this.fileType = file.type
            if (!['image/png', 'image/jpg', 'image/gif', 'image/jpeg'].includes(this.fileType)) {
                this.$Message.error('请上传正确的图片')
                return
            }
            if (file.size > 20 * 1024 * 1024) {
                this.$Message.error('请选择20M以内的图片')
                return
            }
            if (typeof FileReader === 'function') {
                const reader = new FileReader()
                reader.onload = (event) => {
                    let imgSrc = event.target.result
                    this.imgList.push({
                        imgSrc: imgSrc,
                        name: file.name,
                        rotate: 0
                    })
                }
                reader.readAsDataURL(file)
            } else {
                alert('对不起,您的浏览器暂不支持此功能!')
            }
        },
        // 拖拽上传
        initDragUpload () {
            let dom = this.$refs.drag
            dom.addEventListener('dragover', function(e) {
                e.stopPropagation();
                // 阻止浏览器默认打开文件的操作
                e.preventDefault();
                e.dataTransfer.dropEffect = 'copy';
            });
            dom.addEventListener('drop', (e) => {
                e.stopPropagation()
                // 阻止浏览器默认打开文件的操作
                e.preventDefault()
                var files = e.dataTransfer.files
                console.log(files)
                console.log(e)
                Object.values(files).forEach((file) => {
                    const reader = new FileReader()
                    reader.onload = (event) => {
                        let imgSrc = event.target.result
                        this.imgList.push({
                            imgSrc: imgSrc,
                            name: file.name,
                            rotate: 0
                        })
                    }
                    reader.readAsDataURL(file)
                })
            })
        },

需要注意的部分是,FileReader读取图片的相对地址(本机地址),传至服务器需要的信息也可以在此处获取到

const reader = new FileReader()
                reader.onload = (event) => {
                    let imgSrc = event.target.result
                    this.imgList.push({
                        imgSrc: imgSrc,
                        name: file.name,
                        rotate: 0
                    })
                }
                reader.readAsDataURL(file)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

躺平,睡觉

苦逼三线前端,给点支持吧。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值