h5本地預覽上傳的圖片或視頻

經過<input id="input" type="file" onchange="changeFile()"> 中的change事件 拿到的file不能直接在本地預覽選擇的圖片或者視頻,能夠經過如下兩種方式預覽本地圖片,不用上傳到服務器就能夠本地預覽。html

createObjectURL

這種方式生成的文件地址能夠預覽圖片和視頻瀏覽器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input id="inputFile" onchange="change();" type="file">
<img id="img" src="">
<script>
    function change() {
        console.log(111);
        var uploadUrl = getFileUrl('inputFile');
        var img =document.getElementById('img');
        img.src = uploadUrl;
    }
    function getFileUrl(sourceId) {
        var url;
        if (navigator.userAgent.indexOf("MSIE") >= 1) { // IE
            url = document.getElementById(sourceId).value;
        } else if (navigator.userAgent.indexOf("Firefox") > 0) { // Firefox
            url = window.URL.createObjectURL(document.getElementById(sourceId).files.item(0));
        } else if (navigator.userAgent.indexOf("Chrome") > 0) { // Chrome
            url = window.URL.createObjectURL(document.getElementById(sourceId).files.item(0));
        }
        return url;
    }
</script>
</body>
</html>

本地預覽的視頻地址最終結果 blob格式服務器

clipboard.png

FileReader

var reader = new FileReader();

reader.onload =function(e){
    aImg.src = e.target.result;
}
reader.readAsDataURL(file); // file是指選擇的文件 files[0]

本地預覽的視頻地址最終結果 base64格式性能

clipboard.png

按照前輩們的說法,creatObjectURL能夠有更好的性能,或許是瀏覽器自帶接口的緣由, 能夠處理的更快。url

相關文章
相關標籤/搜索