如何在 JavaScript 中从二进制数据创建 File 对象

Posted

技术标签:

【中文标题】如何在 JavaScript 中从二进制数据创建 File 对象【英文标题】:How to create a File object from binary data in JavaScript 【发布时间】:2013-08-19 11:27:25 【问题描述】:

我可能在这里遗漏了一些简单的东西,但是在给定从 AJAX 请求接收到的二进制数据的情况下,我将如何在 javascript 中创建 File 对象?

$.ajax(
  url: "http://example.com/image.jpg",
  success: function(data) 
    // Convert binary data to File object
  
);

【问题讨论】:

这似乎相关:***.com/questions/8390855/… 【参考方案1】:

我终于想通了。为了避免跨站点脚本问题,我在我的服务器上创建了一个代理端点。然后我可以将图像 URL 传递给我的服务器,然后服务器对远程文件执行 GET 请求,将响应转换为 Base64,并将其发送回浏览器。然后,浏览器可以将数据转换回二进制文件并创建一个 Blob(就我的目的而言,它与 File 一样好)。

$.ajax(
  url: apiRoot + "/proxy",
  data: url: "http://example.com/image.jpg",
  success: function(data) 
    var binary = atob(data.split(',')[1]);
    var array = [];
    for (var i = 0; i < binary.length; i++) 
      array.push(binary.charCodeAt(i));
    
    var file = new Blob([new Uint8Array(array)], type: 'image/jpeg');
  
);

【讨论】:

如果我使用了`var file = new File([new Uint8Array(array)], type: 'image/jpeg');`我如何获得图像的名称?跨度>

以上是关于如何在 JavaScript 中从二进制数据创建 File 对象的主要内容,如果未能解决你的问题,请参考以下文章

将核心数据文件从二进制转换为 XML

从二进制文件创建 Numpy 数组的有效方法

如何从二进制数据中读取数字,跨平台(C/C++)?

Dask 从二进制文件中读取数据

使用和不使用 NI Vision 从二进制缓冲区/文件创建 LabVIEW IMAQ 图像

如何从二进制文件中查找静态分配的大小?