利用FileReader读取elment-ui中上传组件el-upload,实现本地图片预览

690 阅读1分钟
现将图片发送到服务器,后端会返回对图片中关键词的标注,并同时渲染道页面与原始图片做一个对比

当关闭自动上传属性后只会出发一个钩子函数on-change,注意before-upload需要提交文件后才能触发,但是实在上传之前。on-cahnge绑定的函数会有一个输入型参数,也就是event,但是event里面没有target属性,但是还有raw属性

export default {
  data(){
    return{
       localFile:{}
    }
  },
  methods:{
     // 选取图片后自动回调,里面可以获取到文件
     imgSaveToUrl(event或file){  // 也可以用file
     	this.localFile=event.raw  // 或者 this.localFile=file.raw

     	// 转换操作可以不放到这个函数里面,
     	// 因为这个函数会被多次触发,上传时触发,上传成功也触发
     	let reader = new FileReader()
     	reader.readAsDataURL(this.localFile);// 这里也可以直接写参数event.raw
                      
     	// 转换成功后的操作,reader.result即为转换后的DataURL ,
    	 // 它不需要自己定义,你可以console.log(reader.result)看一下
     	reader.onload=()=>{
       		console.log(reader.result)
            // 这里动态绑定到src上就可以本地预览了,亲测有效
    	}

     	/* 另外一种本地预览方法 */
     	let URL = window.URL || window.webkitURL;
     	this.model.icon = URL.createObjectURL(file.raw);    
    	// 转换后的地址为 blob:http://xxx/7bf54338-74bb-47b9-9a7f-7a7093c716b5
     }
 }

MDN: developer.mozilla.org/zh-CN/docs/…