Пожалуйста, обратите внимание на новые ответы, в которых содержится более свежая информация, поскольку с годами все изменилось!
Поскольку многие новые библиотеки Node.js быстро становятся устаревшими, а примеров в любом случае относительно мало, я хочу спросить о загрузке изображений с помощью:
- Node.js (v0.4.1)
- Экспресс (1.0.7)
- Мангуст (1.1.0).
Как это сделали другие?
Я обнаружил: грозный узел , но я новичок в загрузке изображений в целом, поэтому я хочу изучить общие вещи и способы сделать это с помощью Node.js и Express.
npm install multer --save
а затем в своем приложении вы можете получить доступreq.files.your_file_param_name
и либо сохранить в s3 с помощью,aws-sdk
либоfs.writeFile(...)
Ответы:
Я отвечу на свой вопрос впервые. Я нашел пример прямо из первоисточника. Пожалуйста, простите за плохой отступ. Я не знал, как правильно делать отступ при копировании и вставке. Код взят прямо из
multipart/form-data
примера Express на GitHub.источник
Поскольку вы используете экспресс, просто добавьте bodyParser:
тогда ваш маршрут автоматически получит доступ к загруженным файлам в req.files:
Если вы назовете элемент управления вводом «todo» следующим образом (в Jade):
Затем загруженный файл будет готов к тому времени, когда вы получите путь и исходное имя файла в 'files.todo':
другие полезные свойства req.files:
источник
bodyParser
небезопасно, по крайней мере, согласно этому: andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html . Ответ Джона Дж. Сработал для меня.Вы можете настроить промежуточное программное обеспечение парсера тела соединения в блоке конфигурации в основном файле приложения:
источник
Видите ли, лучшее, что вы можете сделать, - это просто загрузить изображение на диск и сохранить URL-адрес в MongoDB. Отдохните, когда снова получите изображение. Просто укажите URL-адрес, и вы получите изображение. Код для загрузки следующий.
Теперь сохраните целевой путь в своей базе данных MongoDB.
Опять же, при получении изображения просто извлеките URL-адрес из базы данных MongoDB и используйте его в этом методе.
источник
Попробуйте этот код - он поможет.
источник
util.pump(ins, ous)
обесценивается, это можно сделатьins.pipe(ous);
сейчас. Но удалит ли это файл изображения в старом месте?Вы также можете использовать следующее, чтобы указать путь для сохранения файла.
источник
Я создал пример, который использует Express и Multer. Это очень просто и позволяет избежать всех предупреждений Connect.
Это может кому-нибудь помочь.
источник
bodyParser
(что небезопасно, см. Andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html )Опять же, если вы не хотите использовать bodyParser, работает следующее:
источник
Для Express 3.0, если вы хотите использовать грозные события, вы должны удалить составное промежуточное ПО, чтобы вы могли создать его новый экземпляр.
Сделать это:
Можно записать как:
А теперь создайте объект формы:
Я также разместил это в своем блоге, Получение грозного объекта формы в Express 3.0 при загрузке .
источник
Я знаю, что исходный вопрос относился к конкретным версиям, но он также относился к "последним" - сообщение @JohnAllen больше не актуально из-за Expressjs bodyParser и connect-form
Это демонстрирует простой в использовании встроенный bodyParser ():
источник
Вот мой способ загрузки нескольких файлов:
Nodejs:
Убедитесь, что в вашей форме есть enctype = "multipart / form-data"
Надеюсь, это поможет вам;)
источник
Вот способ загрузки изображений с помощью огромного пакета, который рекомендуется использовать вместо bodyParser в более поздних версиях Express. Это также включает в себя возможность изменять размер ваших изображений на лету:
С моего веб-сайта: загрузка и изменение размера изображений (на лету) с помощью Node.js и Express .
Вот суть:
ПРИМЕЧАНИЕ. Для быстрого изменения размера большого пальца требуется Image Magick.
источник