- AJAX 教程
- AJAX - 首页
- AJAX - 什么是AJAX?
- AJAX - 历史
- AJAX - 动态网站与静态网站
- AJAX - 技术
- AJAX - 动作
- AJAX - XMLHttpRequest
- AJAX - 发送请求
- AJAX - 请求类型
- AJAX - 处理响应
- AJAX - 处理二进制数据
- AJAX - 提交表单
- AJAX - 文件上传
- AJAX - FormData 对象
- AJAX - 发送POST请求
- AJAX - 发送PUT请求
- AJAX - 发送JSON数据
- AJAX - 发送数据对象
- AJAX - 监控进度
- AJAX - 状态码
- AJAX - 应用
- AJAX - 浏览器兼容性
- AJAX - 示例
- AJAX - 浏览器支持
- AJAX - XMLHttpRequest
- AJAX - 数据库操作
- AJAX - 安全性
- AJAX - 问题
- Fetch API 基础
- Fetch API - 基础
- Fetch API vs XMLHttpRequest
- Fetch API - 浏览器兼容性
- Fetch API - 头部信息
- Fetch API - 请求
- Fetch API - 响应
- Fetch API - 主体数据
- Fetch API - 凭据
- Fetch API - 发送GET请求
- Fetch API - 发送POST请求
- Fetch API - 发送PUT请求
- Fetch API - 发送JSON数据
- Fetch API - 发送数据对象
- Fetch API - 自定义请求对象
- Fetch API - 上传文件
- Fetch API - 处理二进制数据
- Fetch API - 状态码
- Stream API 基础
- Stream API - 基础
- Stream API - 可读流
- Stream API - 可写流
- Stream API - 变换流
- Stream API - 请求对象
- Stream API - 响应体
- Stream API - 错误处理
- AJAX 有用资源
- AJAX - 快速指南
- AJAX - 有用资源
- AJAX - 讨论
Fetch API - 处理二进制数据
二进制数据是指以二进制格式而不是文本格式存在的数据,例如 new 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 中,接收二进制数据意味着在发出请求后从服务器检索响应数据。要接收二进制数据,我们必须将 responseType 设置为 ArrayBuffer() 或 Blob() 的正确值。
示例
在下面的程序中,我们创建一个程序将从服务器接收二进制数据。我们使用 fetch() 函数从给定的 URL 获取二进制数据。在 fetch() 中,我们定义头部信息,告诉浏览器我们期望二进制响应,并将 responseType 设置为 arraybuffer,以便告诉浏览器您正在接收 ArrayBuffer 作为响应。然后,我们在 .then() 块中接收 promise 并检查状态是否为 OK。如果状态为 OK,则使用 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 查找状态码。