HTML5 FileReader how to return result?

前端 未结 4 1868
忘了有多久
忘了有多久 2020-11-27 15:22

I use JS FileReader. I want to get result after file reading operation and work with this data. FileReader is asynchronous and I don\'t know when result is ready. How to get

4条回答
  •  天涯浪人
    2020-11-27 16:04

    Here's the javascript:

    $(document).ready(function() {
        $('#file_input').on('change', function(e) {
    
            function updateProgress(evt) {
                if (evt.lengthComputable) {
                    // evt.loaded and evt.total are ProgressEvent properties
                    var loaded = (evt.loaded / evt.total);
                    if (loaded < 1) {
                        // Increase the prog bar length
                        style.width = (loaded * 200) + "px";
                    }
                }
            }
    
            function loaded(evt) {
                // Obtain the read file data    
                var fileString = evt.target.result;
                // Handle UTF-16 file dump
                $('#output_field').text(fileString);
            }
            var res = readFile(this.files[0]);
    
            var reader = new FileReader();
    
            reader.readAsText(this.files[0], "UTF-8");
    
            reader.onprogress = updateProgress;
            reader.onload = loaded;
    
    
        });
    });
    
    function readFile(file) {
        var reader = new FileReader(),
            result = 'empty';
    
        reader.onload = function(e) {
            result = e.target.result;
        };
    
        reader.readAsText(file);
    
        return result;
    }
    

    And of course, the HTML portion:

    
    

    Seems to work for *.txt files.

    See this fiddle.

提交回复
热议问题