简体   繁体   中英

javascript code to save a txt file

can any body tell me how i create a .txt file using javascript which is browser compatable too.

and after creating the file it gives the save as diaglog box so that i can save the file that is created.

any other logic is also wellcome

i am doing it well in IE,

but the same code isn't running in the other browsers

If you're looking for IE only solution, try this:

function createFile() {
    set fso = new ActiveXObject("Scripting.FileSystemObject");
    set s = fso.CreateTextFile("C:\test.txt", True);
    s.writeline("HI");
    s.writeline("Bye");
    s.writeline("-----------------------------");
    s.Close();
}

You can't do this, for hopefully obvious security reasons. JavaScript has no access to the file system...in IE it's not JavaScript, but ActiveX doing this...it just has a JavaScript API exposed.

The problem isn't that Firefox doesn't do this...it's that IE ever allowed it :)

In this post In Firefox, Write to a File using Javascript?

you need to send the data to the server and then offer a link to download it. Here's a terrible example with jquery and php just to give you basic idea.

$.ajax({
    type: "post",
    url: "ajax.php",
    data: {
        type: "save",
        text: "this is some text you want to send"
    },
    dataType: "json",
    success: function(data){
        window.open(data["url"]);
    }
});

ajax.php

<?php
    if($_POST["type"] == "save"){
        $name = "random_name.txt";
        file_put_contents("$name",$_POST["text"]);

        echo json_encode(array(
            "type" => "link",
            "url" => "http://yourserver.com/{$name}"
        ));
    }

?>

For a great example of how to do this, look at TiddlyWiki which implements a single user wiki in Javascript. It supports all the major browsers and in each will save a copy of itself to the local disk.

It uses the FileSystemObject in IE (as described previously in this question) The best info for file saves in FireFox is https://developer.mozilla.org/en/Code_snippets/File_I%2F%2FO

For Chrome, Opera & Safari is uses a little applet:

The TiddlySaver Java applet allows TiddlyWiki to save changes in a local version (from a file:// URL) of Safari, Opera and other browsers.

One may indeed initiate data URL downloads, including in a way to prompt a file dialog (though not with a default path or even file type). See https://stackoverflow.com/a/13696029/271577 for such a solution (along with text link examples). That being said, opening the content in a new tab via data URLs may be a better solution if you can get users to manually save using their browser.

You can only do this by sending your data to a server-side language, which can write to files. Then you could send the location of the file back and redirect the user there.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM