vue 檔案上傳及預覽
<template>
<div id="file">
<input name="files" id="uploaderInput" type="file" accept="images/*" multiple @change="change"/>
<div class="file_upload">
<div class="progress"></div>
</div>
<div class="img_holder"></div>
</div>
</template>
<script>
export default {
name: "file",
methods: {
change(E) {
//獲取到獲取的圖片列表 (選擇多張)
let file = event.target.files[0];
//獲取到獲取的圖片列表 (選擇一張)
//let img1 = event.target.files[0];
//let reader = new FileReader();
//console.log($("#uploaderInput")[0].files);
//console.log(img1);
//let type = file.type; //檔案的型別,判斷是否是圖片
//let size = file.size; //檔案的大小,判斷圖片的大小
var reader = new FileReader(); //新建FileReader物件
reader.readAsDataURL(file); //讀取為base64
//以下程式碼可以刪除
reader.onloadstart = function() {
console.log("start"); //開始讀取
};
//程式碼進度條
reader.onprogress = function(e) {
//這個是定時觸發的事件,檔案較大的時候較明顯
//console.log(e)
var p = "已完成:" + Math.round(e.loaded / e.total * 100) + "%";
$(".file_upload")
.find(".progress")
.html(p);
console.log("uploading"); //檔案較大,就會出現多個uploading
};
reader.onabort = function() {
console.log("abort"); //用作取消上傳功能
};
reader.onerror = function() {
console.log("error"); //檔案讀取出錯的時候觸發,暫模擬不出
};
//成功後 獲取檔案url
reader.onload = function(e) {
console.log("load complete"); //完成
console.log(e);
let res = e.target.result.split(";"); //擷取 data:; base64 轉換後預設會有data屬性判斷檔案格式;分為兩段,前段為data,後端為檔案base64編碼
if (res[0] != "data:application/apk;") {
// 不同瀏覽器會有不一樣的解析;so 這一步單獨處理
_this.apk.app = "data:application/apk;" + res[1];
} else {
_this.apk.app = e.target.result;
}
console.log(_this.apk.app)
};
//預覽程式碼
reader.onloadend = function(e) {
var dataURL = reader.result,
image = '<img src="' + dataURL + '"/>', //預覽圖片
text = '<span>"' + dataURL + '"</span>'; //測試預覽text
var name = file.name,
size = Math.round(file.size / 1024);
var div = "<p>Name: " + name + "</p><p>Size: " + size + "kb</p>";
var imglist =
'<div class="img_box"><span class="delete">X</span>' +
image +
div +
"</div>";
$(".img_holder").html(imglist);
};
// if (this.imgData.accept.indexOf(type) == -1) {
// alert("請選擇我們支援的圖片格式!");
// return false;
// }
// if (size > 3145728) {
// alert("請選擇3M以內的圖片!");
// return false;
// }
}
}
};
</script>