Подтвердить что ты не робот

Как отправить файлы с помощью node.js

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

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

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

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

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

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

Спасибо!

4b9b3361

Ответ 1

app.get('/img/bg.png', function(req, res) {
  res.sendFile('public/img/background.png')
})

http://expressjs.com/api.html#res.sendfile

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

Ответ 2

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

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

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

См. API облачных файлов RackSpace.

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

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

Ответ 3

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

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

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

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