我正在尝试使用节点流构建文件流api,由s3-blob-store(或任何其他实现abstract-blob-store的api)支持但我似乎无法获得明确的请求或响应将数据传输到适当的读写流中的对象。
我正在使用类似于FeathersJS的基于服务的架构:
create(data, params) {
return new Promise((resolve, reject) => {
const { request } = params;
if (typeof request === 'undefined') {
reject(new Error('blob-service: no request object attached to params. Make sure to use the middleware'));
} else {
const contentType = request.get('Feathers-Content-Type');
const streamId = shortid.generate();
const extension = mimeTypes.extension(contentType);
const id = `${ streamId }.${ extension }`;
const writeStream = this.Model.createWriteStream({ key: id });
writeStream.on('error', reject);
writeStream.on('finish', () => {
resolve({
[ this.id ]: id
});
});
request.pipe(writeStream);
}
});
}
this.Model
是S3 blob商店的一个实例。由于request
是一个可流式处理的对象,我应该可以执行request.pipe(writeStream)
但是虽然请求返回201
,但实际上并没有写入数据。
在下载方面,我如何将读取流传输到快速响应对象?