【问题标题】:Javascript download multiple files and concatenate into a single fileJavascript下载多个文件并连接成一个文件
【发布时间】:2016-08-15 19:07:15
【问题描述】:

我正在支持网站开发工作。根据请求将两个二进制文件下载到客户端浏览器。这两个文件可以来自两个不同的来源。

要求是将两个文件连接成一个文件。在 JavaScript 中创建单个文件并编写第一个下载的内容,然后是第二个下载的内容也是可以接受的。

在 JavaScript 中使用 FileAPI 或任何其他相关 API 是否可行?

我是否需要探索 Chrome/Firefox 扩展才能达到同样的效果?

【问题讨论】:

  • “合并”是什么意思?
  • 糟糕!更好的是我将其称为连接。
  • 这对我来说没有多大意义。您从字面上连接两个二进制文件?生成的文件如何有用或可读?你的意思是把文件放在像 zip 文件这样的存档中吗?
  • 为了避免服务器负载,这已经完成了。第一个文件只有几 MB,并且包含用户特定的数据,而剩余的大文件将从不同的服务器下载,比如 Amazon S3。安装的用户应用程序具有读取和理解文件内容的能力。

标签: javascript


【解决方案1】:

我不确定您要做什么,但如果我理解正确,您可以将文件存储到 ArrayBuffers 然后合并它们:

/**
 * Creates a new Uint8Array based on two different ArrayBuffers
 *
 * @private
 * @param {ArrayBuffers} buffer1 The first buffer.
 * @param {ArrayBuffers} buffer2 The second buffer.
 * @return {ArrayBuffers} The new ArrayBuffer created out of the two.
 */
var _appendBuffer = function(buffer1, buffer2) {
  var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);
  tmp.set(new Uint8Array(buffer1), 0);
  tmp.set(new Uint8Array(buffer2), buffer1.byteLength);
  return tmp.buffer;
};

来源:https://gist.github.com/72lions/4528834

Here你可以阅读更多关于ArrayBuffers的信息,你绝对应该查看MDN的Sending and Receiving Binary Data

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
  • 2017-05-04
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多