尽管我使用 express 公开,但无法访问服务器上的文件

cannot reach a file on server though I exposed using express

在我的项目中,我需要动态存储一些文本文件,最终用户应该能够从浏览器下载它们。我知道最好的方法是使用像 MINIO 或 S3 这样的对象存储,但不幸的是我唯一的方法是在内存存储中使用。所以我想做的是:我创建了一个 public 文件夹并使用以下代码将其公开:

var express = require('express');
var app = express();

//setting middleware
app.use(express.static( 'public')); //Serves resources from public folder


var server = app.listen(5000);

就这么简单。然后为了确保我可以下载并访问文件进行测试,我创建了一个 public 文件夹,其中包含 t.txt 文件,当我尝试时:

http://localhost:5000/public/t.txt

我明白了

那为什么我不明白呢?另外,我要实现的目标是否与场景非常匹配,是否可行?

当您未在 app.use() 中指定路径时,您的应用程序将在 root[=] 上提供您在 express.static() 中指向的目录的内容20=] 路径。试试这个:

http://localhost:5000/t.txt

就是说,如果您希望它可以在 /public/t.txt 访问,只需指定路径:

app.use('/public', express.static('public'))

首先使用下面一行代码:

app.use(express.static(__dirname+'/public')); 

这意味着静态 HTML 页面的主目录位于 "public" 文件夹中。注意“__dirname”指向的是当前js文件的目录。

之后,从浏览器或 POSTMAN 调用以下 URL:

http://localhost:5000/t.txt

如您所见,无需编写 http://localhost:5000/public/t.txt 来引用 "public" 文件夹,因为您已经在 app.use 行中指定了它。