Fetch API - 处理二进制数据
二进制数据是二进制格式而不是文本格式的数据,例如 新的 Uint8Array([0x43, 0x21])。 它包括图像、音频、视频和其他非纯文本的文件。 我们可以在 Fetch API 中发送和接收二进制数据。 在 Fetch API 中处理二进制数据时,设置正确的标头和响应类型非常重要。 对于二进制数据,我们使用"Content-Type":"application/octet-stream","responseType"属性为"arraybuffer"或"blob",表示接收到二进制数据。
让我们通过以下示例了解如何在 Fetch API 中发送和接收二进制数据。
发送二进制数据
为了发送二进制数据,我们使用 XMLHttpRequest 的 send() 方法,它可以使用 ArrayBuffer、Blob 或 File 对象轻松传输二进制数据。
示例
在下面的程序中,我们创建一个将二进制数据发送到服务器的程序。 因此,首先我们创建二进制数据,然后使用 Blob() 构造函数将二进制数据转换为 Blob。 这里这个构造函数有两个参数:二进制数据和二进制数据的标头。 然后我们创建一个 FormData 对象并将 Blob 添加到 FormData 对象中。 然后我们使用 fetch() 函数将请求发送到服务器,然后处理服务器返回的响应,并处理发生错误的情况。
<!DOCTYPE html>
<html>
<body>
<script>
// Binary data
var BinaryData = new Uint8Array([0x32, 0x21, 0x45, 0x67]);
// Converting binary data into Blob
var blobObj = new Blob([BinaryData], {type: 'application/octet-stream'});
// Creating FormData object
var obj = new FormData();
// Add data to the object
// Here myfile is the name of the form field
obj.append("myfile", blobObj);
// Sending data using POST request
fetch("https://jsonplaceholder.typicode.com/todos", {
// Adding POST request
method: "POST",
// Adding body which we want to send
body: obj
})
// Handling the response
.then(response =>{
if (response.ok){
console.log("Binary data send Successfully");
}
})
// Handling the error
.catch(err=>{
console.log("Found error:", err)
});
</script>
<h2>Sent Binary Data</h2>
</body>
</html>
输出
接收二进制数据
在Fetch API中,接收二进制数据意味着发出请求后从服务器检索响应数据。 为了接收二进制数据,我们设置了正确的响应类型值:ArrayBuffer() 或 Blob()。
示例
在下面的程序中,我们创建一个将从服务器接收二进制数据的程序。 因此,我们使用 fetch() 函数从给定的 URL 获取二进制数据。 在 fetch() 中,我们定义标头,告诉浏览器我们正在等待二进制响应,并将 responseType 设置为 arraybuffer,以便它告诉浏览器您正在接收作为 ArrayBuffer 的响应。 然后我们在 .then() 块中收到 Promise 并检查状态是否正常。 如果状态正常,则借助 arrayBuffer() 函数将响应转换为 ArrayBuffer。 接下来的 .then() 处理返回的二进制数据并相应地显示数据。 .catch() 函数会处理发生的错误。
<!DOCTYPE html> <html> <body> <script> // Receiving data using GET request fetch("https://jsonplaceholder.typicode.com/todos", { // Adding Get request method: "GET", // Setting headers headers: { 'Content-Type': 'application/octet-stream', }, // Setting response type to arraybuffer responseType: "arraybuffer" }) // Handling the received binary data .then(response =>{ if (response.ok){ return response.arrayBuffer(); } console.log("Binary data send Successfully"); }) .then(arraybuffer => console.log("Binary data received Successfully")) // Handling the error .catch(err=>{ console.log("Found error:", err) }); </script> <h2>Binary Data Example</h2> </body> </html>
输出
结论
这就是我们如何使用 Fetch API 处理二进制数据。 为了处理二进制数据,我们需要将二进制数据转换为适当的数据格式。 我们还可以发送文件、字符串、ArrayBuffer 和 Blob 中的二进制数据。 在下一章中,我们将学习如何使用 Fetch API 查找状态代码。

