JavaScript 如何上传 Blob 数据?
Blob 代表二进制大型对象,用于存储二进制数据,例如图像、音频或其他多媒体对象,有时二进制可执行代码也存储为 Blob。
我们可以使用 JavaScript 将 Blob 上传,就像上传任何其他数据文件一样。
JavaScript 可以使用 XMLHttpRequest 或 Fetch API 上传 Blob。
1. 使用 XMLHTTPRequest
XMLHttpRequest (XHR) 是一种以对象形式存在的 API,其方法用于在 Web 浏览器和 Web 服务器之间传输数据。浏览器的 JavaScript 环境提供该对象。它通常用于异步发送和接收数据,而无需重新启动网站。这使得网页能够变得动态、用户友好且快速。
示例
以下是使用 XMLHttpRequest 上传 Blob 的示例:
var blob = new Blob(["Some conventional data"], { type: "text/plain" }); var xhr = new XMLHttpRequest(); xhr.open("POST", "/upload", true); xhr.onload = function (e) { if (xhr.readyState === 4 && xhr.status === 200) { console.log(xhr.responseText); } }; xhr.send(blob);
这里,我们向后端 API 的 /upload 端点发出 POST 请求,并附带一些 Blob 数据。服务器成功响应后,我们会记录响应内容。
2. 使用 Fetch API
Fetch API 允许您向服务器发出请求并从中检索数据。它内置于现代 Web 浏览器中,可用于发出 GET 和 POST 请求。Fetch API 使用 fetch() 方法,该方法返回一个 Promise,该 Promise 解析为 Response 对象。然后,可以使用此 Response 对象访问服务器返回的数据。Fetch API 通常用作较旧的 XMLHttpRequest API 的替代方案,它更现代、更用户友好。它也更通用,因为它可以用于向网页托管服务器以外的服务器发出请求。
以下是使用 Fetch 上传 Blob 的示例:
var blob = new Blob(["Some conventional data"], { type: "text/plain" }); var formData = new FormData(); formData.append("file", blob); fetch("/upload", { method: "POST", body: formData, }) .then((response) => response.text()) .then((responseText) => { console.log(responseText); });
因此,通过这种方式,您可以使用 XMLHTTPRequest 或 Fetch API 将 Blob 数据从前端 Vanilla JavaScript 上传到服务器,而无需使用任何第三方库。