DAY16 - 档案处理 - 上传前预览

接下来的范例都会以vue.js语法撰写喔!

情境

在上传图档到server前,须在前端UI上显示预览图像。

上传预览的两种方式

方法1. ObjectURL

流程

  1. 上传档案後从FileList中取得File物件
  2. 建立 URL物件使用createObjectURL将File物件传入,取得ObjectURL
  3. 将取得的ObjectURL放在需预览的区块,大功告成

流程

HTML

<input type="file" @change="previewObjectURL">

Javascript

previewObjectURL(e){
  let [file] = e.target.files;
  let _objectURI = window.URL.createObjectURL(file);
  
},//end: uploadFile

codepen sample : 连结


方法2. DataURI

流程

  1. 上传档案 -> 从FileList中取得File物件
  2. 透过FileReader,将档案内容透过readAsDataURL将档案转换成DataURI

HTML

<input type="file" @change="previewDataURI">

Javascript

previewDataURI(e){
  let [file] = e.target.files;
  const reader =  new FileReader();
  reader.readAsDataURL(file);
  reader.onloadend = async function(e){
    console.log('filereader',e.target.result);  
  } //end: onloadend
  
},//end: uploadFile

codepen sample : 连结


两种方式都可以做到预览的效果,差异在於第二种方式DataURI的做法,是真的读档案之後再做呈现,所以速度上会比第一种ObjectURL的慢(ObjectURL是参考在档案位置给予URL)。所以可以试试看用比较大的图,再用这两种方式看看,ObjectURL一定会比DataURI的方式快~

那今天就和大家分享到这边罗~~


<<:  没收工就骂脏话 - 适时停损停利

>>:  Day16-205. Isomorphic Strings

[Day 05] - 用Spring Boot 建立Service

一般而言,网站程序大多会是这样的架构: https://developer.mozilla.org/...

使用Ajax取得查询与筛选结果

data: { "key": $("#SearchKeyInput&...

DAY30-EXCEL统计分析:完赛!结语

终於来到第30天了!!! 其实自己也是透过这次的比赛机会而学到了不少,上网查了资料又买书研究,一点一...

从零开始学游戏设计:使用粒子做爆炸效果

这是 Roblox 从零开始系列,效果章节的第八个单元,今天将说明如何透过粒子来实作爆炸效果 Par...

方法论之间的差异:敏捷与瀑布

任何软件应用程序的开发都采用一种系统方法,该方法涉及从规划到部署的多个步骤,该方法称为软件开发生命周...