【问题标题】:Auto Save a file in Firefox在 Firefox 中自动保存文件
【发布时间】:2012-08-29 21:10:19
【问题描述】:

我正在尝试找到一种方法,我们可以使用 JS 在 Firefox 中自动保存文件。迄今为止我在 Windows 桌面上使用 FireShot 的方式:

var element = content.document.createElement("FireShotDataElement");
element.setAttribute("Entire", EntirePage);
element.setAttribute("Action", Action);
element.setAttribute("Key", Key);
element.setAttribute("BASE64Content", "");
element.setAttribute("Data", Data);
element.setAttribute("Document", content.document);
if (typeof(CapturedFrameId) != "undefined")
  element.setAttribute("CapturedFrameId", CapturedFrameId);
content.document.documentElement.appendChild(element);
var evt = content.document.createEvent("Events");
evt.initEvent("capturePageEvt", true, false);
element.dispatchEvent(evt);

但问题是它会打开一个对话框来确认本地驱动器位置的详细信息。有没有办法可以硬编码本地驱动器存储位置并自动保存文件?

【问题讨论】:

  • 那么,您是在创建 Firefox 插件吗?或者您在问如何修改/配置 FireShot?还是您要求 FireShot 替代品?请注意,有关 Stack Overflow 的问题应该与编程有关 - 现在我在您的问题中看不到这种关系(不是问题本身很清楚)。
  • 是的,我正在创建一个 Fire Fox 插件。以上是说明我目前如何实现不适合我想要实现的要求的代码。因此,我正在寻找一个可以自动保存网页的 JS 脚本。

标签: javascript firefox firefox-addon


【解决方案1】:

如果您正在创建 Firefox 插件,那么 FileUtilsNetUtil.asyncCopy 是您的朋友:

Components.utils.import("resource://gre/modules/FileUtils.jsm");
Components.utils.import("resource://gre/modules/NetUtil.jsm");

var TEST_DATA = "this is a test string";
var source = Components.classes["@mozilla.org/io/string-input-stream;1"].
                 createInstance(Components.interfaces.nsIStringInputStream);
source.setData(TEST_DATA, TEST_DATA.length);

var file = new FileUtils.File("c:\\foo\\bar.txt");
var sink = file.openSafeFileOutputStream(file, FileUtils.MODE_WRONLY |
                                               FileUtils.MODE_CREATE);
NetUtil.asyncCopy(source, sink);

这会将字符串this is a test string异步写入文件c:\foo\bar.txt。请注意,NetUtil.asyncCopy 会自动关闭两个流,您不需要这样做。但是,您可能希望将函数作为第三个参数传递给此方法 - 它将在写入操作完成时调用。

另见:Code snippets, writing to a file

【讨论】:

    【解决方案2】:

    每台计算机都有不同的文件结构。但是,还是有办法的。您可以将其保存到 cookie / session,这取决于您的数据想要的“永久”程度。

    不要考虑写入物理文件,因为它需要额外的权限。

    【讨论】:

    • 我使用的是 Windows 桌面,只需要写入本地驱动器
    猜你喜欢
    • 2018-08-25
    • 2018-07-08
    • 2015-05-11
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    相关资源
    最近更新 更多