html5 把 file文件转成base64字符,base64字符转成blob对象案例(适用于多种类型文件)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta name="viewport" id="viewport" content="width=device-width, initial-scale=1">
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    
    <div>
        <h4>file 文件转成 base64 字符</h4>
        <input type="file" id="file"/>
        <img src="" id="portrait" style="width:100px; height:100px; display: block;" />
        <textarea id="base64Textarea" cols="30" rows="10" placeholder="base64信息输出"></textarea>
    </div>
    
    <br>
    <br>
    <br>

    <div>
        <h4>base64 字符转成 blob对象</h4>
        <button id="toBlob">点击转成blob对象</button>
        <p>转成blob对象方便与上传到七牛</p>
    </div>

<script>

var base64Data = '';
var blob = null;

document.getElementById('file').onchange=function(e){
    var file = e.target.files[0];
    if(window.FileReader) {
         var fr = new FileReader();
          fr.readAsDataURL(file);
          fr.onloadend = function(e) {
              base64Data = e.target.result;
              document.getElementById('portrait').src = base64Data;
              document.getElementById('base64Textarea').value = base64Data;
          }
    }
}

//转成blob对象第一种方式
function dataURLtoBlob(dataurl) {
     var arr = dataurl.split(','), 
         mime = arr[0].match(/:(.*?);/)[1],
        bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);

        while(n--){
           u8arr[n] = bstr.charCodeAt(n);
        }
          return new Blob([u8arr], {type:mime});
}

document.getElementById('toBlob').onclick=function(){
    if ( base64Data ) {
        blob = dataURLtoBlob(base64Data);
        console.log(blob);

        alert('已转成blob对象,请查看浏览器 console');
    }else{
        alert('你还没生成base64文件');
    }
}    
    

</script>
</body>
</html>

猜你喜欢

转载自www.cnblogs.com/zion0707/p/8888971.html