Tag: 下载

将文件从受保护的path下载到浏览器

我有一个反应前端和一个nodejs / express后端。 后端可以通过受保护的路线提供文件(下载): GET /api/file/:id 当前端想要启动一个文件下载时,它使用这个代码向这个端点发送一个请求(并且Authorization头被设置了一个有效的token ): axios.get(`${apiURL}/file/${id}`) .then(file => { … }) 后端回应这个代码: router.get('/file/:id', requireAuth, = (req, res, next) => { … res.set('Content-Type', 'application/pdf'); res.download(file.path, file.filename); };); 这工作正常:下载开始,二进制数据存在于axios调用的axios .then()情况的file对象中。 我的问题: 而不是下载完整的文件,我想在文件下载开始之前将文件传递给浏览器,这样浏览器就像通常的浏览器触发下载一样处理下载,浏览器会提示下载或显示文件。 如何才能做到这一点…? 解决scheme: 感谢@FakeRainBrigand提示,我通过请求参数向路由添加了基于令牌的授权(使用护照策略): const jwtOptions = { jwtFromRequest: ExtractJwt.fromExtractors([ ExtractJwt.fromHeader('authorization'), ExtractJwt.fromUrlQueryParameter('token'), ]), secretOrKey: secretKey, }; 现在我可以将下载直接传递给浏览器来处理它: window.location.href = `${apiURL}/file/${_id}?token=${token}`;

NodeJS获取stream文件下载的字节数

在这段代码中,我从一个urlstream中传输一个文件并将其保存到一个文件中。 有没有办法通过pipe道来计算pipe道字节数呢? (这会告诉我的文件大小。) request.stream(url) .pipe(outputFile) 有没有一些图书馆可以通过下载来完成这个工作,或者我自己做一个简单的方法呢?

使用GitLab API和Node.js下载GitLab存储库存档

我想从我的GitLab存储库下载(而不是克隆)档案,但是我得到这个错误 不正确的标题检查(Zlib._handle.onerror) 这是我的function: var fs = require('fs'); var url = require('url'); var https = require('https'); var path = require('path'); var targz = require('tar.gz'); function downloadFile(source, destination, name) { var options = { host: url.parse(source).host, port: 443, path: url.parse(source).pathname }; var file = fs.createWriteStream(destination + path.sep + name); https.get(options, function(res) { res.on('data', function(data) { file.write(data); }).on('end', […]

NodeJS文件下载与WGET?

我正在尝试使用nodejs的WGET方法创build文件下载。 我find了这个: var exec = require('exec'); // Function to download file using wget var download_file_wget = function(file_url) { // extract the file name var file_name = url.parse(file_url).pathname.split('/').pop(); // compose the wget command var wget = 'wget -P ' + DOWNLOAD_DIR + ' ' + file_url; // excute wget using child_process' exec function var child = […]

meteor:通过API下载video文件并保存到磁盘

我试图达到以下目的: 通过API从另一台服务器下载video 将video保存到磁盘以便在<video>标记中提供 但我无能为力 – 我试图下载的video总是无效的(而且尺寸错误)。 这是我的服务器方法: getVideo: function() { var fs = Npm.require('fs'); var response = HTTP.get('http://webserver.com/getvideo'); fs.writeFile('file.mp4',response.content, function (err) { if (err) throw err; console.log('It\'s saved!'); }); } 其他的东西,我已经尝试和呈现基本相同的结果: 使用createWriteStream: var file = fs.createWriteStream('file.mp4'); var response = HTTP.get('http://webserver.com/getvideo'); response.content.pipe(file); 与缓冲区(): var buffer = new Buffer(response.content) fs.writeFile('file.mp4', buffer) 还有不同的编码: base64, binary networking服务器(写在烧瓶)响应这样的: { content: […]

我想创build一个下载button,但文件不下载?

我正在创build请求服务器下载文件的点击监听器的下载button 代码点击侦听器: downloadFileClick(event){ $.ajax('/download', {data:{}}).done(function(data){ }.bind(this)); } 在服务器端下面的代码正在运行 app.get('/download', function(req, res){ var file = __dirname + '/write/imageout.png'; res.download(file); }); 文件不在浏览器中下载。 我检查了从服务器发送给客户端的响应,它发送文件内容,但不从浏览器下载。

Node.js:服务dynamicpdf,空着

我有一个节点服务,从API获取pdf并提供该pdf。 当我curl或直接打开API,我看到正确的PDF。 但是,当我从我的节点应用程序服务,我得到一个空的PDF。 这是我的代码的PDF渲染的部分。 } else if (options.type === 'pdf') { res.writeHead(200, {'content-type' : 'application/pdf', 'content-disposition': 'attachment; filename=invoice.pdf'}); res.end(data.invoice); 我有console.log'ed data.invoice知道这是正确的东西。 typeof(data.invoice)给出string; 但我也试过res.end(new Buffer(data.invoice)); 哪个也没用 这里是我的代码提取数据的部分 var http_options = { method : options.method , host : Config.API.host , path : options.path , port : Config.API.port , headers : options.headers }; var req = http.request(http_options, function […]

如何使用json2csv创build后下载CSV文件

我正在使用json2csv节点模块生成一个CSV文件,其中的数据写得非常好。 这是我的代码与我的数据创build一个CSV文件。 Lead.find({ownerId:owner._id}, function(err, data){ if(err){res.json(err)} else{ res.json(data); var fields = ['lead', 'salutation', 'fname','lname','title','email','mobile','rating','address','city','state','zcode','company','industry','empSize','lsource']; var csv = json2csv({ data: data, fields: fields }); var path='./public/csv/file'+Date.now()+'.csv'; fs.writeFile(path, csv, function(err,data) { if (err) {throw err;} else{ console.log('file Created'); //I need to download above creating csv file here } }); } }); 所以,现在我想知道如何在生成csv后下载创build的CSV文件。 我试过res.setHeader('Content-disposition', 'attachment; filename=data.csv'); res.set('Content-Type', 'text/csv'); […]

如何加速node.js文件操作?

在我的项目中,客户端会请求从服务器下载一个带有ID的文件。 我必须执行以下操作: 从mongoDbvalidationID 检查扩展名 检查文件是否存在 阅读文件并将内容写入回复 我正在使用下面的代码来检查文件并发送响应。 fs.exists(filename, function(exists) { if (!exists) { res.writeHead(404, '', { "Content-Type" : "text/plain" }) res.write("404 Not Found\n"); res.end(); return; } fs.readFile(filename, "binary", function(err, file) { if (err) { res.writeHead(500, '', { "Content-Type" : "text/plain" }) res.write(err + "\n"); res.end(); return; } res.setHeader("Pragma", "public"); res.setHeader("Cache-Control: private, max-age=3600"); res.setHeader("Transfer-Encoding: chunked"); res.setHeader("Range: […]

Node.js下载多个文件

我需要从url下载多个文件。 我已经在文件中列出了他们的名单。 我该怎么做? 我已经做到了,但是不起作用。 我需要保持直到最后一次下载完成,然后才开始下一个wan。 我怎样才能做到这一点?