仅使用javascript生成和保存/下载文件

时间:2012-12-28 00:01:22

标签: php javascript jquery html

我为我的游戏制作了一个地图编辑器,代码生成一个id为“code”的div。我想知道如何使用此代码生成javascript文件。显然我必须得到代码div的文本。 var code = $("#code").text();会奏效。但现在我想用这段代码生成和下载javascript文件。甚至可以用javascript生成/下载文件,还是必须使用php?

我想手动选择文件夹和名称。

3 个答案:

答案 0 :(得分:0)

JavaScript无法提示文件保存。您最好的选择是将其转储到新窗口并将其显示给用户,他们可以选择保存它(文件 - >保存)。否则,您需要找到一种方法将必要的信息传递给PHP调用,然后PHP可以使用Content-Disposition: attachment提供它,并且可以提示客户端下载该文件。

此外,由于机器人只是打败了我,你可以使用像flash一样的插件来保持它的客户端,但它仍然不是简单的JavaScript。但是Downloadify确实具有该功能。

答案 1 :(得分:0)

你问题的简短回答是否定的。出于安全考虑,浏览器非常小心,不允许Javascript对文件系统做任何事情。

然而,Flash并没有这样的限制;退房:https://github.com/dcneiner/Downloadify。当然,Flash有其自身的问题,例如移动浏览器往往不支持它(但由于您的用例正在下载文件,而移动用户可能不会这样做,这可能不是问题你)。

除了Downloadify(或类似的基于Flash的解决方案)之外,您唯一的选择是Java小程序(您不想走这条路),浏览器插件或某种服务器参与(例如,作为@Brad Christie描述)。

答案 2 :(得分:0)

你可以做到这一点,尽管你对建议文件名和文件扩展名的控制能力很差。

我不会将它用于制作网站,但它似乎有效。

function promptSave(data) {
    /*@cc_on @*/
    /*@if (@_jscript_version >= 4)
        //ie code here
        var iframe = document.createElement("iframe");
        document.body.appendChild(iframe);
        var doc = iframe.contentWindow.document;
        doc.write(data);
        doc.execCommand('SaveAs', '', 'somefilename.txt');//only certain file extensions allowed
        document.body.removeChild(iframe);
        @else @*/
        // non ie code
        window.location = 'data:application/octet-stream;base64,' + window.btoa(data);
    /*@end @*/
}
var data = 'var jsFoo = {k:55};';
promptSave(data);

demo

firefox坚持将其保存为.part文件。