Как отправить файлы с помощью node.js - PullRequest
26 голосов
/ 17 февраля 2012

Как вы отправляете файлы на node.js / express.

Я использую Rackspace Cloudfiles и хочу отправлять изображения / видео в их удаленное хранилище, но я не уверен, что это так же просто, как чтение файла (fs.readFileSync ()) и отправлять данные в теле запроса, или это так?

Какими должны быть заголовки.

Что если это очень большой файл на пару ГБ?

Можно ли использовать суперагент (http://visionmedia.github.com/superagent) для этого или есть лучшая библиотека для отправки файлов?

Пожалуйста, дайте мне немного информации об этом.

Спасибо!

Ответы [ 3 ]

50 голосов
/ 13 февраля 2013
app.get('/img/bg.png', function(req, res) {
  res.sendFile('public/img/background.png')
})

https://expressjs.com/en/api.html#res.sendFile

используйте "res.sendFile"."res.sendfile" устарел.

6 голосов
/ 18 февраля 2012

Для больших файлов вы захотите использовать концепцию node.js, объединяющую потоки ввода-вывода. Вы хотите открыть локальный файл для чтения, запустить HTTP-запрос в стойку, а затем передать события данных из процесса чтения файла в процесс HTTP-запроса.

Вот статья о том, как это сделать .

Суперагент подходит для небольших файлов, но поскольку суперагент API предполагает, что все тело запроса загружается в память перед началом запроса, это не лучший подход для передачи больших файлов.

Обычно вам не нужно особо беспокоиться о заголовках запросов, поскольку библиотека HTTP-запросов узла отправит вам соответствующие заголовки. Просто убедитесь, что вы используете тот метод HTTP, который требуется вашему API (возможно, POST), и похоже, что для стоечного пространства вам потребуется добавить дополнительный заголовок X-Auth-Token вместе с вашим токеном API.

4 голосов
/ 17 февраля 2012

Я использую Rackspace Cloudfiles и хочу отправлять изображения / видео в их удаленное хранилище, но я не уверен, что это так же просто, как чтение файла (fs.readFileSync ()) и отправка данных в теле запроса, или это так

Вы должны никогда использовать fs.readFileSync в целом. Когда вы используете его или любой другой метод, называемый somethingSync, вы блокируете весь сервер на время этого вызова. только приемлемое время для выполнения синхронных вызовов в программе node.js во время запуска.

Какими должны быть заголовки.

См. API RackSpace Cloud Files .

Можно ли использовать суперагент (http://visionmedia.github.com/superagent) для этого или есть лучшая библиотека для отправки файлов?

Хотя у меня нет опыта работы с суперагентом, я уверен, что он будет работать нормально. Просто убедитесь, что вы читаете документацию по API и делаете запросы в соответствии с их спецификацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...