Home > Web Front-end > JS Tutorial > body text

How Can JavaScript Read Local File Contents in Different Browsers?

Linda Hamilton
Release: 2024-11-24 22:32:15
Original
868 people have browsed it

How Can JavaScript Read Local File Contents in Different Browsers?

Reading File Contents on the Client-Side in JavaScript in Various Browsers

In an attempt to read file contents from a client machine using a browser, a script-only solution has been developed for Firefox and Internet Explorer. The solution leverages the File API for Firefox and an ActiveXObject for Internet Explorer.

File API for Firefox

function getFileContents() {
    var fileForUpload = document.forms[0].fileForUpload;
    var fileName = fileForUpload.value;

    if (fileForUpload.files) {
        var fileContents = fileForUpload.files.item(0).getAsBinary();
        document.forms[0].fileContents.innerHTML = fileContents;
    }
}
Copy after login

ActiveXObject for Internet Explorer

function ieReadFile(filename) 
{
    try
    {
        var fso  = new ActiveXObject("Scripting.FileSystemObject"); 
        var fh = fso.OpenTextFile(filename, 1); 
        var contents = fh.ReadAll(); 
        fh.Close();
        return contents;
    }
    catch (Exception)
    {
        return "Cannot open file :(";
    }
}
Copy after login

Cross-Browser Support

However, there is no known way to perform this task in other browsers, such as Safari and Chrome, using the above methods. The File API, as implemented in these browsers, provides only access to file name and file size, lacking the ability to read content.

File API Update

The File API has since been standardized and implemented in most modern browsers, including IE 10 onwards. This API supports asynchronous file reading, binary file handling, and text encoding decoding.

var file = document.getElementById("fileForUpload").files[0];
if (file) {
    var reader = new FileReader();
    reader.readAsText(file, "UTF-8");
    reader.onload = function (evt) {
        document.getElementById("fileContents").innerHTML = evt.target.result;
    }
    reader.onerror = function (evt) {
        document.getElementById("fileContents").innerHTML = "error reading file";
    }
}
Copy after login

WebKit and HTML 5 Proposal

Alternatively, if desired, one could submit a patch or propose the Mozilla API for inclusion in HTML 5, increasing the likelihood of cross-browser compatibility in the future.

The above is the detailed content of How Can JavaScript Read Local File Contents in Different Browsers?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template