从客户端Node.js下载文件



所以我正在尝试建立一个网站,当用户访问网站并单击下载按钮时,该网站允许用户下载位于服务器计算机中的文件。

由于现实世界中的一些限制,我希望尽可能少地使用图书馆。理想情况下没有Express或Ajax。我认为这应该完全有可能只使用香草node.js

从我在互联网上的搜索来看,似乎大多数代码都是这样的形式:

const fs = require('fs');
const https = require('https');

// URL of the image
const url = 'GFG.jpeg';

https.get(url,(res) => {
// Image will be stored at this path
const path = `${__dirname}/files/img.jpeg`; 
const filePath = fs.createWriteStream(path);
res.pipe(filePath);
filePath.on('finish',() => {
filePath.close();
console.log('Download Completed'); 
})
})

然而,代码似乎并没有达到我想要的效果。首先,它需要一个url,所以它更多的是将在线资源引导到另一个位置。然而,当用户访问网站时,我想在服务器上为他们提供一个本地存储的文件。

其次,它似乎正在下载到服务器计算机。但我想要的是让用户下载到他们自己的客户端设备上。基本上是当你想在互联网上下载东西时,你会遇到的正常下载功能;下载";有一些新条目的部分。

我怎样才能实现我想要的?

我完全不懂这一点,所以如果我能得到一个带有伪文件或路径名的骨架代码,那就太好了。

感谢您的指导。谢谢

您缺少一个http.server。http.get只是执行一个web请求,正如您所说,您不想这样做。

以下是一些创建服务器并在不使用express的情况下提供单个文件的示例代码:

const fs = require('fs');
const path = require('path');
const http = require('http');
http.createServer(function(request, response) {
var filePath = path.join(__dirname, '/files/img.jpeg');
response.writeHead(200);
var readStream = fs.createReadStream(filePath);
readStream.pipe(response);
}).listen(2000);

最新更新