¡Considere las respuestas más nuevas que tienen información más actualizada ya que las cosas han cambiado a lo largo de los años!
Dado que muchas bibliotecas nuevas de Node.js se están volviendo obsoletas rápidamente y hay relativamente pocos ejemplos de todos modos, quiero preguntar sobre la carga de imágenes usando:
- Node.js (v0.4.1)
- Expreso (1.0.7)
- Mangosta (1.1.0).
¿Cómo lo han hecho otros?
He encontrado: node-formidable , pero soy nuevo en la carga de imágenes en general, así que quiero aprender cosas generales y formas de hacerlo usando Node.js y Express.
npm install multer --save
y luego en su aplicación puede accederreq.files.your_file_param_name
y guardar en s3 conaws-sdk
ofs.writeFile(...)
Respuestas:
Responderé a mi propia pregunta por primera vez. Encontré un ejemplo directamente de la fuente. Por favor, perdone la mala sangría. No estaba seguro de cómo sangrar correctamente al copiar y pegar. El código proviene directamente del
multipart/form-data
ejemplo Express en GitHub.fuente
Ya que está usando express, simplemente agregue bodyParser:
entonces su ruta automáticamente tiene acceso a los archivos cargados en req.files:
Si nombra el control de entrada "todo" así (en Jade):
Luego, el archivo cargado estará listo cuando obtenga la ruta y el nombre del archivo original en 'files.todo':
otras propiedades útiles de los archivos requeridos:
fuente
bodyParser
es inseguro, al menos de acuerdo con esto: andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html . La respuesta de Jon J funcionó para mí.Puede configurar el middleware del analizador de cuerpo de conexión en un bloque de configuración en su archivo de aplicación principal:
fuente
Mira, lo mejor que puedes hacer es simplemente subir la imagen al disco y guardar la URL en MongoDB. Descanse cuando recupere la imagen nuevamente. Simplemente especifique la URL y obtendrá una imagen. El código para cargar es el siguiente.
Ahora guarde la ruta de destino en su base de datos MongoDB.
Nuevamente, mientras recupera la imagen, simplemente extraiga la URL de la base de datos MongoDB y úsela en este método.
fuente
Prueba este código, te ayudará.
fuente
util.pump(ins, ous)
está depreciado, esto podría hacerseins.pipe(ous);
ahora. ¿Pero esto eliminará el archivo de imagen en la ubicación anterior?También puede utilizar lo siguiente para establecer una ruta donde guardar el archivo.
fuente
Yo creé un ejemplo que utiliza Express y Multer. Es muy simple y evita todas las advertencias de Connect
Podría ayudar a alguien.
fuente
bodyParser
(lo cual es inseguro, consulte andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html )Nuevamente, si no desea utilizar bodyParser, lo siguiente funciona:
fuente
Para Express 3.0, si desea utilizar los eventos formidables, debe eliminar el middleware multiparte para poder crear la nueva instancia del mismo.
Para hacer esto:
Se puede escribir como:
Y ahora crea el objeto de formulario:
También publiqué esto en mi blog, Obteniendo un formidable objeto de formulario en Express 3.0 al cargar .
fuente
Sé que la pregunta original estaba relacionada con versiones específicas, pero también se refería a la "última": la publicación de @JohnAllen ya no es relevante debido a Expressjs bodyParser y connect-form
Esto demuestra el bodyParser () incorporado fácil de usar:
fuente
Ahí está mi método para cargar varios archivos:
Nodejs:
Asegúrese de que su formulario tenga enctype = "multipart / form-data"
Espero que esto te eche una mano;)
fuente
Aquí hay una forma de cargar sus imágenes utilizando el formidable paquete, que se recomienda sobre bodyParser en versiones posteriores de Express. Esto también incluye la capacidad de cambiar el tamaño de sus imágenes sobre la marcha:
Desde mi sitio web: Carga y cambio de tamaño de imágenes (sobre la marcha) con Node.js y Express .
Aquí está la esencia:
NOTA: Esto requiere Image Magick para cambiar el tamaño del pulgar rápidamente.
fuente