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>
4
  • 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. Commented Nov 18, 2012 at 0: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. Commented Nov 18, 2012 at 0:53
  • 4
    Also, ActiveX only works for IE. I'd recommend forgetting about it. Commented Nov 18, 2012 at 0:54
  • HTML5 can only let you write text files to the client not server. Commented Nov 18, 2012 at 1:56

4 Answers 4

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.

Sign up to request clarification or add additional context in comments.

Comments

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.

2 Comments

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?
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.
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.

Comments

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.