Я создаю сервер с использованием парусов, который должен извлекать содержимое pdf из конечной точки и отправлять его в ответ. Как мне это сделать Это то, что я пробовал до сих пор:
fn: async function (inputs, exits) {
const downloadLink = this.req.param('link');
const pdf = (await axios.get(downloadLink, { responseType: 'blob'
})).data
if (!downloadLink || !pdf) {
throw 'not found';
}
this.res.attachment('abc').send(pdf);
return exits.success();
}
Однако это, похоже, не работает. У меня в Chrome установлен pdf.js, который отображает содержимое PDF. Когда я пытаюсь запустить приведенный выше код, он пытается открыть файл, но в итоге выдает ошибку «недопустимое содержимое pdf».
AFAIK, оператор this.res.attachment
делает это самостоятельно. sailsjs.com/documentation/reference/response-res/res-attachm ent
@JagadeshaNH опубликованная вами ссылка указывает, как читать файл из файловой системы, а затем передавать его в ответ. В моем случае у меня уже есть контент, я не уверен, как передать его в ответ.
Следующее, кажется, помогает:
fn: async function (inputs, exits) {
const downloadLink = this.req.param('link');
const pdf = (await axios.get(downloadLink, { responseType: 'arraybuffer'
})).data
if (!downloadLink || !pdf) {
throw 'not found';
}
this.res.attachment('abc.pdf').send(pdf);
return exits.success();
}
Обратите внимание на изменение типа ответа с blob
на arraybuffer
.
Вы установили заголовок application / pdf в типе содержимого?