我正在工作的simple server可以提供图像。当直接浏览图片网址时,Chrome会提供下载图片,而不是仅仅在浏览器中显示图片。这是为什么?据推测它在标题中是什么东西?
相关代码如下:
tilestore.getTile(req.param("z"), req.param("x"), req.param("y"), function(err, tile) {
if (!err) {
res.send(tile);
} else {
res.send("Tile rendering error: " + err + "\n");
}
});
我是否需要在标题中添加内容?它们目前如下:
HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Mon, 01 Sep 2014 07:22:30 GMT
Content-Type: application/octet-stream
Content-Length: 37779
Connection: keep-alive
X-Powered-By: Express
ETag: W/"9393-1937584155"
答案 0 :(得分:2)
好的,这很简单。只需设置content-type
:
if (!err) {
res.contentType('image/png');
res.send(tile);
} else {
res.send("Tile rendering error: " + err + "\n");
}
这些图片始终为.png
。
新标题:
HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Mon, 01 Sep 2014 07:33:22 GMT
Content-Type: image/png
Content-Length: 37779
Connection: keep-alive
X-Powered-By: Express
ETag: W/"9393-1937584155"
答案 1 :(得分:1)
刚遇到同样的问题,发现单独修改内容类型是不够的。 This answer试图做相反的事情,提供了解决方案。我还需要添加content-disposition
标头:
res.set("Content-Disposition", "inline;");
除了设置正确的内容类型,这还允许我显示我的图像而不是下载。