Node.js 在为存储在web根目录外的照片提供服务时,我应该使用什么url?

Node.js 在为存储在web根目录外的照片提供服务时,我应该使用什么url?,node.js,Node.js,我是web开发的新手,我正在尝试找出如何为存储在web根目录之外的照片提供服务。我知道出于安全原因,我不应该将照片(用户上传的照片)存储在web根目录中,但这似乎存在一个问题。如何向用户显示这些照片?以下是我到目前为止的情况: app.get('/photos', function(req, res) { var fs = require('fs'); fs.readFile('./photos/photo_1.jpg', 'utf8', function (err,data)

我是web开发的新手,我正在尝试找出如何为存储在web根目录之外的照片提供服务。我知道出于安全原因,我不应该将照片(用户上传的照片)存储在web根目录中,但这似乎存在一个问题。如何向用户显示这些照片?以下是我到目前为止的情况:

app.get('/photos', function(req, res) {
    var fs = require('fs');
    fs.readFile('./photos/photo_1.jpg', 'utf8', function (err,data) {
        if (err) {
            return console.log(err);
        }
        pic = data;
    });
}
问题是我真的不知道该怎么办。对于存储在web根目录中的照片,我将执行以下操作:

<img src="inside-web-root-directory/pics/some_pic.jpg" alt="pic">


对于未存储在web根目录中的照片,我不确定在
src
中放置什么。我该怎么办?

如果您只是直接从其他位置检索照片,那么最好将它们放在web服务器的文档根目录中,因为这同样不安全。您可以为此使用Express的静态模块。在这种情况下我不建议这样做

在这种情况下,我要做的是接受一个ID号,该ID号指的是数据库中包含其他信息(谁上传的、何时上传的等)的记录,并包含磁盘上资产的真实文件名。该资产通过ID号或其他GUID(不带文件扩展名)命名,并在请求时返回。例如:

app.get('/photos/:id', function (req, res) {
    // Use req.params.id to look up your image in a database
    // Use res.sendfile to send the real file on disk to the user
});

如果图像存储在web根目录之外,则无法直接引用它。您需要某种服务器端代码来检索和提供它。^^是的,您必须使用php来获取它。或者,您可以将图像存储在主根目录中,但图像名称的设置方式应确保用户不能简单地从image1转到image2.jpg,而是需要知道散列后的全名才能检索。它不是100%安全,但更容易操作implement@ProfileTwist这个问题用Node.js标记得很清楚。。。它与PHP无关。那么。。。答案是你不能。正如@MikeW所解释的,您必须使用服务器端代码。或者,您可以使用长哈希名称重命名图像,并将其放置在服务器的公用文件夹中,如我前面所述。@ProfileTwist我建议您阅读Node.js: