【问题标题】:Download a file hosted on node js web server on button click单击按钮下载托管在节点 js Web 服务器上的文件
【发布时间】:2018-01-22 18:38:17
【问题描述】:

我是 nodejs 的新手。 我想使用 nodejs 创建一个 Web 服务器,它将托管一些静态文件。为此,我设法做到了 -

var http = require('http');

var finalhandler = require('finalhandler');
var serveStatic = require('serve-static');

var serve = serveStatic("./");

var server = http.createServer(function(req, res) {
  var done = finalhandler(req, res);
  serve(req, res, done);
});

server.listen(8080);

我有一个测试文件,比如 hostedFile.zip 。 当我点击 url,http://localhost:8080/hostedFile.zip,这个文件被下载。 现在我想向网页添加按钮并在按钮单击时下载相同的文件。 我尝试过的是 -

var http = require('http');

var finalhandler = require('finalhandler');
var serveStatic = require('serve-static');

var serve = serveStatic("./");

var server = http.createServer(function(req, res) {
  var done = finalhandler(req, res);
  res.end('<p><a href="/hostedFile.zip">Download</a></p>\n');
  serve(req, res, done);
});

server.listen(8080);

但它不起作用。有什么(概念)是我遗漏的吗?

【问题讨论】:

  • 具体是什么不起作用?你有错误吗?有没有意外发生?
  • 它只是导航到页面 - 'localhost:8080/hostedFile.zip',但不下载 zip 文件。
  • @user7866584 你的问题得到答案了吗?我面临同样的问题。当我尝试通过按钮下载时..它不起作用/下载..但是当我点击 url 时,它会下载文件。

标签: javascript node.js http webserver


【解决方案1】:

您可以在链接中使用download 属性

res.end('<p><a download="file.zip" href="/hostedFile.zip">Download</a></p>\n');

此属性指示浏览器下载 URL 而不是导航到它,因此将提示用户将其保存为本地文件。如果属性有值,则作为保存提示中的预填充文件名
MDN

【讨论】:

  • 试过了,但它没有下载完整文件,即我有 800mb 的 zip 文件,但它的下载只有 150mb
【解决方案2】:

使用 HTML download 属性。来自w3schools

点击链接时下载文件(而不是导航到文件):

<a href="/hostedFile.zip" download>

【讨论】:

  • 没有下载完整文件,即我有 800mb 的 zip 文件,但下载的只有 150mb
猜你喜欢
  • 2013-03-30
  • 2019-01-23
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多