如何在Node.js Express中提供图像服务

10

我有这段代码

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

var app = express();
var server = http.createServer(app);

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

console.log("listen to 8080");
server.listen(8080);

我将图片上传至/uploads/test.jpg,但是当我打开http://localhost:8080/uploads/test.jpg时,出现了Cannot GET /uploads/test.jpg的提示信息。

4个回答

27

static 方法指定你将从哪个 文件夹提供静态内容。目前,你的图像可以从 http://localhost:8080/test.jpg 访问。

要从子文件夹提供图像,你需要在 static 目录下创建此文件夹,例如:

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

- public
-- uploads
---- test.jpg

5

app.use函数默认的路径是'/'。当给定的路由不是'/'时,中间件处理仅在请求路径名中存在路径段时有用。例如,如果我们将一个函数挂载在'/example'上,它将在'/example'上调用而不是在'/'上调用。因此,您的请求路径为"/uploads/test.jpg"。 要解决这个问题

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

现在中间件被挂载在'/uploads'路径下,所有路径为'/uploads'的请求和服务(如 GET /uploads/test.jpg 等)将会被处理。

3
使用以下代码来提供名为public的目录中的图像、CSS文件和JavaScript文件。
var express = require('express');
var app = express();
app.use(express.static('public'));

现在,您可以加载位于public目录中的文件:
示例:
localhost:3000/images/kitten.jpg
localhost:3000/css/style.css
localhost:3000/js/app.js

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

app.listen(2020, () => {
  console.log("Server Started");
})

Run: localhost:2020/static/test.jpg


欢迎来到Stack Overflow!虽然这段代码可能解决了问题,但是包括解释它如何以及为什么解决了问题将有助于提高您的帖子质量,并可能导致更多的赞。请记住,您正在回答未来读者的问题,而不仅仅是现在提问的人。请[编辑]您的答案以添加解释并指出适用的限制和假设。 - Yunnosch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接