我试图在我的请求中将文件的内容发送到客户端,但Express提供的唯一文档是它的下载功能,它需要一个物理文件;我试图发送的文件来自S3,所以我只有文件名和内容. 如何发送文件的内容以
如何发送文件的内容以及内容类型和文件名的相应标题以及文件的内容?
例如:
files.find({_id: id}, function(e, o) { client.getObject({Bucket: config.bucket, Key: o.key}, function(error, data) { res.send(data.Body); }); });文件类型明显取决于文件.看看这个:
http://en.wikipedia.org/wiki/Internet_media_type
如果你知道你的文件到底是什么,那么将其中一个分配给响应(尽管不是强制性的).您还应该将文件的长度添加到响应中(如果可能,即如果它不是流).如果您希望它可以作为附件下载,那么添加Content-Disposition标头.总而言之,你只需要添加:
var filename = "myfile.txt"; res.set({ "Content-Disposition": 'attachment; filename="'+filename+'"', "Content-Type": "text/plain", "Content-Length": data.Body.length });
注意:我正在使用Express 3.x.
编辑:实际上Express非常聪明,可以为您计算内容长度,因此您不必添加Content-Length标头.