js的File对象,Blob和file相互转换

一、 Blob转成File

MDN File()

let blob = new Blob(['这里是要转换的字符串或者图片等'], { type: "text/plain;charset=utf-8" });
console.log("Blob对象", blob);
let file = new File([blob], 'test.jpg', { type: blob.type })
console.log("File对象", file);

File()除了可以转换Blob外,还可以是一个包含ArrayBuffer,ArrayBufferView,或者 DOMString 对象的 Array — 或者任何这些对象的组合。

这是 UTF-8 编码的文件内容

二、File转成Blob

MDN FileReader()

MDN Blob()

<div class="upload">
   <input id="input" type="file" onchange="upload(this)">
</div>
function upload(e) {
    let file = e.files[0];
    console.log("File对象", file);
    fileToBlob(file)
}

function fileToBlob(file) {
    let reader = new FileReader();
    reader.addEventListener('load', (e) => {
        let base64 = e.target.result;
        let blob = new Blob([base64], { type: file.type });
        console.log("Blob对象", blob);
    })
    reader.readAsDataURL(file)
}

三、Blob转成text文本字符

let blob = new Blob(['挫折,永不言败。理想,永不止步。目标,永不停歇。命运,永不屈服。'], { type: "text/plain;charset=utf-8" });
console.log("Blob对象", blob);
blobToText(blob)

function blobToText(blob) {
    let reader = new FileReader();
    reader.addEventListener('load', (e) => {
        let text = e.target.result;
        console.log("Text内容:\n", text);
    })
    reader.readAsText(blob)
}

转二进制用FileReader.readAsBinaryString()

posted @ 2022-12-12 00:46  槑孒  阅读(3948)  评论(0编辑  收藏  举报