aditya
aditya

Reputation: 495

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

Upvotes: 3

Views: 13854

Answers (6)

Brett Zamir
Brett Zamir

Reputation: 14365

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.

Upvotes: 0

Lindsay Morsillo
Lindsay Morsillo

Reputation: 530

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.

Upvotes: 1

Ilia Choly
Ilia Choly

Reputation: 18557

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

?>

Upvotes: 1

Jason Kaczmarsky
Jason Kaczmarsky

Reputation: 1686

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.

Upvotes: 0

hirikarate
hirikarate

Reputation: 3315

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?

Upvotes: 2

Mrchief
Mrchief

Reputation: 76248

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

Upvotes: 1

Related Questions