formData 上傳文件,解析爲二進制文件上傳

使用FileReaderAPI

我個人更喜歡ES7方法。但是語法花了我一段時間才習慣。

使用ES5

function getBinaryFromFile(file, cb) {
    const reader = new FileReader();

    reader.addEventListener("load", cb.bind(this, reader.result));
    reader.addEventListener("error", console.error.bind(this, err));

    reader.readAsBinaryString(file);
}

// Usage 
var file = document.body.files[0];

getBinaryFromFile(file, function(binary) {/*API call*/});

使用ES7 Async / Await

// Get binary without ugly callbacks using ES7
function getBinaryFromFile(file) {
    return new Promise((resolve, reject) => {
        const reader = new FileReader();

        reader.addEventListener("load", () => resolve(reader.result));
        reader.addEventListener("error", err => reject(err));

        reader.readAsBinaryString(file);
    });
}

// Usage 
var file = document.body.files[0],
    binary = await getBinaryFromFile(file);

// API call
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章