jquery NW JS -从URL下载并保存文件

3phpmpom  于 2023-10-17  发布在  jQuery
关注(0)|答案(3)|浏览(137)

我最近开始使用NW.JS开发桌面应用程序,我需要从URL(http://someurl.org/file.zip)下载一个文件,我设法保存文件,但它似乎损坏或格式不正确,我无法打开或解压缩它。
我使用jQuery从Node.JS下载文件和'fs'模块来保存它。
下面是一个简单的例子:

module.exports.download = function (jQuery, url) {

    return jQuery.ajax({
        url         : url,
        timeout     : 1000000
    });

};

以下是其余部分:

$('#btnUpdateClient')
            .click(function () {
                ClientDownload
                    .download($, addresses.CLIENT_URL)
                    .complete(function (xhr, status) {
                        console.log(xhr);
                        fs.writeFile('./files/staClient.zip', xhr.responseText, function (err) {

                            if(err) {
                                alert('error!');
                                console.log(err);
                            } else {
                                alert('file Saved!');
                            }

                        });
                    });
            });

很明显缺少了一些东西,.zip文件是3.8MB,但是当我使用fs.writeFile()时,文件最终变成了7.3MB
我是个新手,有什么建议吗?

5sxhfpxr

5sxhfpxr1#

如果下载进度对您很重要,请使用此:

var http = require('http');
var fs = require('fs');

var req = http.get('http://someurl.org/file.zip', function (res) {

    var fileSize = res.headers['content-length'];
    res.setEncoding('binary');
    var a = "";
    res.on('data', function (chunk) {
        a += chunk;
        document.getElementById('percent').innerHTML = Math.round(100*a.length/fileSize) + "";
    });
    res.on('end', function() {
        fs.writeFile('D:\\file.zip', a, 'binary', function (err) {
            if (err) throw err;
            console.log('finished');
        });
    });
});
envsm3lx

envsm3lx2#

没关系,我刚刚意识到我甚至不需要使用jQuery,我只是像这样使用NodeJS:

$('#btnUpdateClient')
            .click(function () {

                var file = fs.createWriteStream('./files/staClient.zip');

                var request = http.get(addresses.CLIENT_URL, function (response) {
                    response.pipe(file);
                });
            });
uttx8gqw

uttx8gqw3#

所有这些方法都需要您编写自己的Save as对话框窗口。我建议调用Chrome扩展API进行文件下载

chrome.downloads.download({url: 'https://ya.ru'});

相关问题