#pdf #nodejs
Закрыт. Этот вопрос необходимо уточнить или дополнить подробностями. Ответы на него в данный момент не принимаются. Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение. Закрыт 3 года назад. У меня есть сайт, серверная часть которого написана на node.js. Как мне сделать так, что бы клиенты могли загружать pdf файлы с сайта?
Ответы
Ответ 1
Любое из: Отдавайте вебсервером перед NodeJS просто как статические файлы. Скажем, nginx и директива try_files попытается по адресу отдать статический файл в указанном месте, а если не удастся, передаст запрос куда-то ещё, в зависимости от настроек. Если вы используете другой вебсервер, не nginx, смотрите его документацию. В целом, отдавать статические файлы предпочтительно минуя NodeJS, поскольку это лишний расход ресурсов, когда есть вебсерверы, расходующие ресурсы для решения такой простой задачи куда эффективнее. Отдавайте обычным HTTP-ответом (взято отсюда, правда, это про mp3, для PDF придётся заменить Content-Type): http.createServer(function(request, response) { var filePath = path.join(__dirname, 'myfile.mp3'); var stat = fileSystem.statSync(filePath); response.writeHead(200, { 'Content-Type': 'audio/mpeg', 'Content-Length': stat.size }); var readStream = fileSystem.createReadStream(filePath); readStream.pipe(response); }) .listen(2000); Комбинация: отдать файл по указанию приложения через обратный прокси. Например, nginx и X-Accel-Redirect: когда возвращающийся через прокси ответ содержит этот заголовок, nginx вместо передачи ответа дальше отдаст его клиенту файл по указанному пути. В отличие от отдачи файлов просто nginx'ом, запрос всё же дойдёт до приложения, и приложение сможет решить, отдавать ли файл вообще (можно вкрутить авторизацию), и если да, то какой (по одному пути можно отдавать разным людям разные файлы). Но в отличие от полной обработки запроса приложением, получив заголовки, обратный прокси отсоединится от приложения и будет сам отправлять то, что ему сказали. Приложение тем временем, в зависимости от архитектуры, может заняться другим запросом от пользователя. Есть и модуль для Apache, оперирует заголовком X-SENDFILE.
Комментариев нет:
Отправить комментарий