使用 Express 框架提供图像

Serving Images With Express Framework

我正在尝试使用 express 框架提供 .png,但一直收到 "Cannot /get" 错误。

var express  = require('express'),
    mongoose = require('mongoose'),
    fs = require('fs'),
    Schema = mongoose.Schema;
    app  = express(),
    port = process.env.PORT || 3000;

app.use('/public/media', express.static(__dirname + '/public/media/img0.png'));
app.listen(port);

console.log(__dirname + '/public/media/img0.png');

我打印出文件的目录名称以确保路径正确。然而,深入研究 develepor 工具显示由于 404 错误无法加载资源。

我的文件结构是这样的。

   -- admin
     -- app.js public
       -- media
         -- img0.png img1.png

据我所见,我的静态文件服务器应该可以工作,所以我有点不知所措。想法?

您可以尝试将 static 应用于整个目录:

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

注意这一行:

app.use('/public/media', express.static(__dirname + '/public/media/img0.png'));

也就是说,如果浏览器要求 /public/media,那么请提供 PNG 文件。这样就可以了。

如果浏览器要求 /public/media/img0.png,那么这将是 404。

您的意思可能是:

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

这将为 /public/media 提供 404,但如果相应的图像文件存在,它将提供您在该目录中指定的任何图像。所以如果浏览器请求 /public/media/img0.png,它会得到它。