- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在从事一个基本上可以在客户端生成视频的内部项目,但由于我不知道有任何 JavaScript 视频编码器,所以我只是单独导出每个帧。我需要避免上传到服务器;这一切都发生在客户端。
我正在使用这个 FileSaver.js (更具体地说,Chrome 的 webkit FileSystem API)保存大量由 HTML5 Canvas 生成的 PNG。我将 Chrome 设置为自动下载到特定文件夹,所以当我点击“保存”时,它会立即启动并每秒保存大约 20 张图像。这非常适合我的目的。
如果我可以使用 JSZip在将所有这些帧压缩到一个文件中,然后将其提供给客户端保存,我愿意,但我什至没有尝试过,因为浏览器没有足够的内存来生成〜8000 640x480 PNG然后压缩它们。
问题是在一定数量的图像之后,每个下载的文件都是空的。 Chrome 甚至开始在下载栏中告诉我该文件为 0 字节。在具有相同导出设置的同一项目上重复,空保存在完全相同的时间开始。例如,对于一个项目,我可以在它卡住之前保存前 5494 帧。 (我知道这是一个非常大的数字,但我无能为力。)我尝试在保存之间设置 10 毫秒的延迟,但这没有任何效果。我没有尝试过更大的延迟,因为导出需要很长时间。
我检查了 blob.size,它永远不会为零。我怀疑它超出了一些配额,但没有抛出任何错误;它只是默默地无法写入沙箱或将文件复制到用户指定的位置。
我如何检测这些空存档?阻止他们?有一个更好的方法吗?我只是搞砸了吗?
编辑:实际上,在调试 FileSaver.js 之后,我意识到它甚至没有使用 webkitRequestFileSystem;它到达这里时返回:
if (can_use_save_link) {
object_url = get_object_url(blob);
save_link.href = object_url;
save_link.download = name;
if (click(save_link)) {
filesaver.readyState = filesaver.DONE;
dispatch_all();
return;
}
}
所以,看起来它甚至没有使用 FileSystem API,因此我不知道如何在存储空间满之前清空它。
编辑 2:我尝试将“if (can_use_save_link)” block 移动到“writer.onwriteend”函数内部,并将其更改为:
if (can_use_save_link) {
save_link.href = file.toURL();
save_link.download = name;
click(save_link);
}else{
target_view.location.href = file.toURL();
}
结果是我能够保存所有 8260 个文件(总共约 1.5GB),因为它现在使用的存储空间有配额。以前,这些文件没有出现在 HTML5 文件系统中,因为我假设如果 anchor 元素支持“下载”属性,则不需要将它们放在那里。
我还能够注释掉将“.download”附加到文件名的代码,并且我必须提供一个空的匿名函数作为“file.remove()”的两个实例的参数。
最佳答案
使用 JSZip,如果禁用压缩(默认),它不会占用太多内存。无论如何要手动禁用压缩,请确保在调用 zip.generate()
时传递 compression: "STORE"
。
关于Javascript FileSaver 在写入大量文件后保存空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11460800/
背景 我正在从事一个基本上可以在客户端生成视频的内部项目,但由于我不知道有任何 JavaScript 视频编码器,所以我只是单独导出每个帧。我需要避免上传到服务器;这一切都发生在客户端。 实现 我正在
我正在使用 FilseSaver.js 保存 rtf 文件。这工作正常。 但是,当我使用特殊字符时,它出错了...字符集自动从 ansi“更改”为 utf-8,并且字符无法正确显示在 rtf 文档中。
我的最终目标是制作一个可以创建 csv 文件的表单。我想弄清楚如何 filesaver.js作品。我尝试了下面的代码但无法使其工作。有什么想法吗?
我正在尝试 FileSaver.js,但是当另存为文本时,所有换行符都消失了。我读过有关 FileSaver.js 的好文章,但丢失了所有换行符,因此它只是一个长文本字符串,这是一个交易破坏者。我总是
我正在开发一个使用 Electron 将 Web 应用程序 package 到桌面应用程序的项目。 在这个项目中,我使用 FileSaver.js 将 Canvas 内容导出为 png/jpg/pdf
我正在使用FileSaver.js使用下面的代码下载文件。该文件会自动下载到默认文件夹(在 Chrome 中测试),但我需要显示一个窗口对话框,其中显示“另存为文件...”之类的内容。谢谢! var
我的问题是,我不断看到一个反复出现的主题,试图让我的记事本克隆保存文件。每当我尝试保存文件时,无论硬盘上的位置如何,都会继续抛出 UnauthorizedAccess 异常。下面是我所做的示例代码,自
我目前正在使用 html2canvas 和 FileSaver,以在单击按钮时保存生成的 Canvas 。将弹出一个对话框,用户可以选择保存图像的位置并根据需要重命名。它在 Firefox 中完美运行
这工作正常,突然停止工作。我不确定到底发生了什么变化。 我需要通过 URL 下载多张图片。 我正在使用以下代码: https://plnkr.co/edit/nsxgwmNYUAVBRaXgDYys?
我在 angular 2 中使用 FileSaver.js,它运行良好;但是,我在构建中遇到语义错误: error TS2304: Cannot find name 'saveAs' 我正在使用 an
我有一个包含以下部分的 Angular 组件: my.component.html(节选) my.component.ts(节选) import {saveAs} from 'file-saver
我在 github 上下载了 FilSaver.js 并尝试对其进行测试以备将来使用。我制作了一个简单的 html 文件,它接受输入,当单击按钮时触发一个函数,该函数将使用 FileSaver 保存文
我在 github 上下载了 FilSaver.js 并尝试对其进行测试以备将来使用。我制作了一个简单的 html 文件,它接受输入,当单击按钮时触发一个函数,该函数将使用 FileSaver 保存文
美好的一天, 我对编程还是新手,我正在使用 FileSaver.js 保存 .txt 文件。 我设法制作了我正在构建的应用程序,将文件保存在我的“下载”文件夹中,但现在当我想读取该文件时却遇到了困难。
我正在使用tkinter用python制作一个小型GUI,其中一部分是询问用户在哪里保存文件。这是我的代码 from tkinter import * import tkinter.filedialo
我不熟悉在 Javascript 中使用导入函数,并且对 how to install filesaver.js. 上的说明感到困惑 在我的代码中,我有: import { saveAs
我正在尝试包括 https://github.com/eligrey/FileSaver.js但是在我的 js 文件中出现以下错误。如果这是正确的做法,我该如何修复 MIME 类型? “拒绝执行来自‘
我正在使用 FileSaver.js文件将我的 Canvas 保存到图像。下载后我必须关闭窗口。有什么办法可以实现吗? 这是我试过的代码, canvas.toBlob(function (blob)
我的前端代码(react)从后端( Node )获取响应并按预期下载 zip 文件,但单击 zip 文件时,将生成 CPGZ 文件,而不是解压缩 zip。 react 代码 downloadResul
我想从 api 下载并保存文件。我的文件名是 text.txt但保存的文件被称为:_text.txt_这个文件的内容是:[object Object] 这是我下载为文件的功能: const optio
我是一名优秀的程序员,十分优秀!