0

I am trying to find a way where by we can auto save a file in Firefox using JS. The way I have done till yet using FireShot on a Windows Desktop:

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);

But the issue is that it opens a dialog box to confirm the local drive location details. Is there a way I can hard code the local drive storage location and auto save the file?

4

2 に答える 2

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。これを行う必要はありません。ただし、関数を 3 番目のパラメーターとしてこのメ​​ソッドに渡したい場合があります。これは、書き込み操作が終了したときに呼び出されます。

関連項目:コード スニペット、ファイルへの書き込み

于 2012-08-29T12:29:41.767 に答える
0

すべてのコンピューターは、異なるファイル構造を持っています。しかし、それでも方法はあります。データを「永続的」にする方法に応じて、Cookie /セッションに保存できます。

追加のアクセス許可が必要なため、物理ファイルへの書き込みは考慮しないでください。

于 2012-08-29T11:09:08.080 に答える