尽管我使用 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 行中指定了它。
在我的项目中,我需要动态存储一些文本文件,最终用户应该能够从浏览器下载它们。我知道最好的方法是使用像 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 行中指定了它。