2

I have a need to capture the topics of a search from one of my blog pages and write it to text file for followup. I have been able to capture the input string, however, am not able to write it to a text file. I have read and tried to implement all the solutions I have found with no success. I include a very simple sample of code to write text to file but I can't get it to work. The Onblur event functions fine to access myFunction, so that's not problem. I'm going crazy as samples shown from others are so simple.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>fs=Server CreateObject ("Scripting FileSystemObject")</title>
    <script type="text/javascript">
    function myFunction()
    {
        var fs = ActiveXObject("Scripting.FileSystemObject");
        var f = fs.OpenTextFile("d:\\test\\topics.txt", 8, true);
        f.WriteLine("This text will be added to the end of file");
        f.Close();
    }
    </script>
    </head>

    <body>
    <input name="Text1" type="text" size="55" onblur="myFunction()" />

    </body>

    </html>
Brad
  • 159,648
  • 54
  • 349
  • 530
Robert
  • 29
  • 1
  • 1
  • 2
  • 1
    Do you want to write the file to the client or server? You won't have any luck writing to the server with JavaScript. – jahroy Nov 18 '12 at 00:53
  • Where did you get the sample code, and what browser are you trying to get this to work on? ActiveX objects only work with Internet Explorer... and I don't know if they work with newer versions of Internet Explorer. – Richard JP Le Guen Nov 18 '12 at 00:53
  • 4
    Also, ActiveX only works for IE. I'd recommend forgetting about it. – jahroy Nov 18 '12 at 00:54
  • HTML5 can only let you write text files to the client not server. – Derek 朕會功夫 Nov 18 '12 at 01:56

4 Answers4

1

If your're using modern browsers which support data-uri, you can create content with javascript and force a download by base64 encoding it and making it compatible with data-uri, then simply pointing window location at it.

This answer demonstrates an HTML-only way to do it.

You can also use a flash helper to take care of this. For instance, Downloadify does this.

Community
  • 1
  • 1
Incognito
  • 20,537
  • 15
  • 80
  • 120
1

JavaScript cannot read/write files from the client or write files to the server (directly).

If you want to write files to the server consider using server-side scripts that will interact with your javascript - and example on how to do this with a little bit of PHP.

In terms of client file interaction this is simply impossible for security reasons (unless it is uploaded to the script in which case it is read accessible).

You can however store data on clients - I have previously been using jStorage and highly recommend it. It works cross-browser (even on IE 6) and is extremely easy to use.

Bart Platak
  • 4,387
  • 5
  • 27
  • 47
  • Thanks for the leads! Can the code I originally submitted for MyFuncion be used to write to file from php or should I abandon ActiveXObject or CreateObject completely and go with: fopen(), fwrite() and fclose() methods for server side storage of simple text strings to .txt file? – Robert Nov 18 '12 at 21:32
  • I would abandon ActiveX entirely - it makes it too browser dependant and will cause a lot of users to be unable to use it. In terms of saving data to the server, I would suggest using AJAX request to a PHP script that would save the data. Obviously you need to implement the mechanism that will limit who and how much can be saved. – Bart Platak Nov 20 '12 at 16:30
0

Thanks for all the suggestions provided by the members, I was able to perform writing and appending to text file on server. I used html code to acquire my data needed for writing and then called a .php file to do the writing to file. It was a client side versus server side issue and the .php solved it, using fopen, fwrite and fclose.

Robert
  • 29
  • 1
  • 1
  • 2
0

Techically, when using javascript in a (.hta) file, you can use the ActiveXObject Scripting.FileSystemObject to access the filesystem, with it there are all the commands you need to do anything to the filesystem that you have permission to do.

var fso=new ActiveXObject("Scripting.FileSystemObject");
if(fso.FolderExists("C:\\Users\\")){
  alert("It exists, hello friend!");
}eles{
  alert("Doesn't exist, who are you?");
}