美文网首页
vue上传和浏览图片(FileReader)

vue上传和浏览图片(FileReader)

作者: 奶瓶SAMA | 来源:发表于2018-11-05 10:48 被阅读0次

    原文地址https://segmentfault.com/a/1190000008503338
    在线浏览

    <template>
        <div ref="box">
          ...
          <input ... />
          // 给个img来承担预览工作就行了
          <img :src="dataUrl" />
          ...
        </div>
    </template>
    <sctipt>
        data () {
            return {
                // 转base64码后的data字段
                dataUrl: ''
            }
        },
        methods: {,
            imgPreview (file) {
                let self = this;
                // 看支持不支持FileReader
                if (!file || !window.FileReader) return;
        
                if (/^image/.test(file.type)) {
                    // 创建一个reader
                    let reader = new FileReader();
                    // 将图片将转成 base64 格式
                    reader.readAsDataURL(file);
                    // 读取成功后的回调
                    reader.onloadend = function () {
                        self.dataUrl = this.result;
                    }
                }
            },
            handleFileChange (e) {
                ...
                this.file = inputDOM.files[0];
                ...
                // 在获取到文件对象进行预览就行了!
                this.imgPreview(this.file);
                ...
            }
        }
    </script>
    
    

    上传

    uploader的话选择完图片在handleFileChange里直接执行个请求上传

    在父组件里获取值该怎么传怎么传

        ...vue
        <input :id="inputId" ... />
        ...
    </template>
    <script>
    ...
    methods: {
        gengerateID () {
            let nonstr = Math.random().toString(36).substring(3, 8);
            if (!document.getElementById(nonstr)) {
                return nonstr
            } else {
                return this.gengerateID()
            }
        },
    },
    mounted () {
        this.inputId = this.id || this.gengerateID();
    }    
    ...
    </script>
    

    相关文章

      网友评论

          本文标题:vue上传和浏览图片(FileReader)

          本文链接:https://www.haomeiwen.com/subject/exnjxqtx.html