如何在JavaScript中将formData对象转换为二进制?

时间:2019-06-10 18:45:56

标签: javascript reactjs rest api

let file = document.body.files[0],


function convertToBinary(file){
  // code
}

有一个我将用于上传文件的API,它仅将文件作为二进制文件。

我可以将它作为formData获得,但我不知道如何将其解析为二进制。

1 个答案:

答案 0 :(得分:1)

使用FileReader API

我个人更喜欢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异步/等待

// 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