Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript, how to read local file?

Tags:

javascript

I try to read a local file from server. I have been "googling" this topic for a while now, and some say it's impossible, others that it can be done. During this search I've found this script:

Read a file using xmlhttprequest

If the HTML file with your javascript app has been saved to disk, this is an easy way to read in a data file. Writing out is more complicated and requires either an ActiveX object (IE) or XPCOM (Mozilla).

fname - relative path to the file

callback - function to call with file text

function readFileHttp(fname, callback) {

    xmlhttp = getXmlHttp();

    xmlhttp.onreadystatechange = function() {

        if (xmlhttp.readyState==4) { 

            callback(xmlhttp.responseText); 

        }

    }

    xmlhttp.open("GET", fname, true);

    xmlhttp.send(null);

}

Return a cross-browser xmlhttp request object

function getXmlHttp() {

    if (window.XMLHttpRequest) {

        xmlhttp=new XMLHttpRequest();

    } else if (window.ActiveXObject) {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

    }

    if (xmlhttp == null) {

        alert("Your browser does not support XMLHTTP.");

    }

    return xmlhttp;

}

But I don't know how to use it, and how should callback function look? Could you provide an example code using these functions?

like image 500
user691285 Avatar asked Jun 28 '11 12:06

user691285


2 Answers

Being able to read a local file from your browser would be a major breach of security - I for one do not like the idea of any site I visit being able to run code in my browser that would read files from my hard drive. Typically ajax requests are limited to the domain from which the page originated. (However, you can get around this to some extent using techniques like JSONP.) Most browsers will not let you read local files even if the page originated from your local filesystem.

The other methods mentioned should allow you to read files from a domain (even if it is localhost), but not from your filesystem directly.

like image 119
tofarr Avatar answered Sep 19 '22 12:09

tofarr


With javascript you can only read files that are publicly exposed on your server. It's similar to opening it in your browser...

I suggest to use jQuery library to do this, ajax request with this are much easier and supported by all major browsers:

http://api.jquery.com/jQuery.get/

for example you can make it like this:

$.get('/content/test.html', function(data) {
  alert(data);
});
like image 43
Łukasz W. Avatar answered Sep 20 '22 12:09

Łukasz W.