Я пытаюсь вернуть файл из GridFS, используя мой контроллер Nest.Насколько я могу судить, nest не соблюдает мой пользовательский заголовок content-type
, для которого я установил application/zip
, так как по возвращении я получаю тип текстового содержимого (см. Скриншот).
данные ответаimage, неправильный заголовок типа содержимого
Мой контроллер гнезд выглядит следующим образом
@Get(':owner/:name/v/:version/download')
@Header('Content-Type', 'application/zip')
async downloadByVersion(@Param('owner') owner: string, @Param('name') name: string, @Param('version') version: string, @Res() res): Promise<any> {
let bundleData = await this.service.getSwimbundleByVersion(owner, name, version);
let downloadFile = await this.service.downloadSwimbundle(bundleData['meta']['fileData']['_id']);
return res.pipe(downloadFile);
}
Вот вызов службы
downloadSwimbundle(fileId: string): Promise<GridFSBucketReadStream> {
return this.repository.getFile(fileId)
}
, который по сути является проходом-после этого.
async getFile(fileId: string): Promise<GridFSBucketReadStream> {
const db = await this.dbSource.db;
const bucket = new GridFSBucket(db, { bucketName: this.collectionName });
const downloadStream = bucket.openDownloadStream(new ObjectID(fileId));
return new Promise<GridFSBucketReadStream>(resolve => {
resolve(downloadStream)
});
}
Моя конечная цель - вызвать конечную точку download
и зарегистрировать браузер в качестве zip-файла и загрузить его вместо просмотра двоичного файла в браузере.Будем весьма благодарны за любые указания относительно того, что нужно сделать, чтобы туда добраться.Спасибо за чтение