我使用Sails JS(适用于任何 Node JS 框架)和第三方外部存储服务(我使用SmartFile,但它可能是S3或任何东西)。
出于安全原因,图像不公开,我需要一个API密钥才能访问它们。 此外,与客户端共享API密钥不是一个好的安全措施。
向客户展示图像的最佳做法是什么?
琐碎的解决方案:
但这听起来像双重努力,服务器下载它,然后再次下载客户端。
更好的想法?
答案 0 :(得分:1)
使用request的简单示例(首先是npm install request
):
// api/controllers/ImageController.js
var request = require('request');
module.exports = {
getImage: function(req, res) {
// Determine which file to download, somehow
var filePath = req.param('filePath');
// Set the content header for the image
res.header('content-type', 'image/jpeg');
// Pipe the image from the external server to the client
request.get("http://someExternalService.com" + filePath).pipe(res);
}
};
所以:
这里没有描述如何使用外部存储服务(可能是auth标头)进行授权以及确定要设置的确切内容类型(可能通过检查文件扩展名)的详细信息,但由于问题是关于如何无需下载两次即可将图像发送到客户端,这是您需要知道的全部内容。