原文地址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>
网友评论