Скачивание файла с конечной точки Sails

Я создаю сервер с использованием парусов, который должен извлекать содержимое 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».

Вы установили заголовок application / pdf в типе содержимого?

Jagadesha NH 25.10.2018 12:21

AFAIK, оператор this.res.attachment делает это самостоятельно. sailsjs.com/documentation/reference/response-res/res-attachm‌ ent

Nahush Farkande 25.10.2018 12:21
stackoverflow.com/questions/50142797/…
Jagadesha NH 25.10.2018 12:30

@JagadeshaNH опубликованная вами ссылка указывает, как читать файл из файловой системы, а затем передавать его в ответ. В моем случае у меня уже есть контент, я не уверен, как передать его в ответ.

Nahush Farkande 25.10.2018 12:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
491
1

Ответы 1

Следующее, кажется, помогает:

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.

Другие вопросы по теме