filer.js icon indicating copy to clipboard operation
filer.js copied to clipboard

Implement download() method

Open ebidel opened this issue 14 years ago • 4 comments

Uses a[download]

ebidel avatar Dec 27 '11 21:12 ebidel

I use a simple method for download files,

// need chrome --disable-web-security or whitelist in manifest!

    /**
    * download up and return a local url string for a given URL entry.
    *
    * @param {string} url a file url
    * @param {string|FileEntry} entryOrPath A path, filesystem URL, or FileEntry
    *     of the file to lookup.
    * @param {Function} successCallback Success callback passed the File object.
    * @param {Function=} opt_errorHandler Optional error callback.
    */

    Filer.prototype.download = function(remoteURL, entryOrPath, successCallback, opt_errorHandler)
    {
        var xhr = new XMLHttpRequest();
        xhr.responseType='blob';
        xhr.open("GET", remoteURL, true);
        tmp_filer = this;
        xhr.onload = function(e)
        {
            if(this.status == 200)
            {
                var buff = xhr.response;
                tmp_filer.write(entryOrPath, {data: buff, type: buff.type}, function(fileEntry, fileWriter)
                {
                    if(successCallback) successCallback(fileEntry.toURL());
                }, opt_errorHandler);
            }
            else
            {
                if(opt_errorHandler) opt_errorHandler();
            }
        }
        xhr.onerror = function (e) {if(opt_errorHandler) opt_errorHandler();}
        xhr.send();
    }

    test_filer = new Filer();
    test_filer.init({persistent: true, size: 5*1024*1024}, function(fs)
    {
        test_filer.download('http://learningfromdogs.files.wordpress.com/2010/09/cats-in-sink.jpg', './cats-in-sink.jpg', function (path) {console.log(path);});
    }, function () {console.log(error)});

micheg avatar Nov 07 '12 17:11 micheg

Just a simple question. If I only need to download files hosted in my domain I will not get Origin is not allowed by Access-Control-Allow-Origin errors?

I am writing an application that downloads texture packs in ZIP format, and caches them in the FileSystem. All packs will be provided by the same server, so I do not think there will be issues, but I would like to make confirm that.

AdamSurfari avatar Apr 09 '13 15:04 AdamSurfari

Correct. If you're XHRing files from the same origin, you won't get errors or need to use flags.

@micheg it's a really bad idea to turn on --disable-web-security in your primary browser :(

ebidel avatar Apr 09 '13 15:04 ebidel

I used it not in the system browser, I used this method inside an app in a chromium portable browser, created for the purpose. Now I'm rewriting that app for nw.js, I'm still undecided whether to use the HTML5 storage or node modules for filesystem.

micheg avatar Jun 23 '15 16:06 micheg