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

Dav*_*nes 5 javascript ajax jquery fileapi

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

$.ajax({
  url: "http://example.com/image.jpg",
  success: function(data) {
    // Convert binary data to File object
  }
});
Run Code Online (Sandbox Code Playgroud)

Dav*_*nes 12

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

$.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'});
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 如果我使用`var file = new File([new Uint8Array(array)],{type:'image / jpeg'});`我如何获得图像名称? (3认同)