You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/README-es.md
+52-22Lines changed: 52 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,13 +2,13 @@
2
2
3
3
Multer es un "*middleware*" de node.js para el manejo de `multipart/form-data`, el cuál es usado sobre todo para la subida de archivos. Está escrito sobre [busboy](https://github.com/mscdex/busboy) para maximizar su eficiencia.
4
4
5
-
**NOTA**: Multer no procesará ningún formulario basado en `multipart/form-data`.
5
+
**NOTA**: Multer no procesará ningún formulario que no sea multiparte (`multipart/form-data`).
6
6
7
7
## Traducciones
8
8
9
9
Éste archivo README también está disponible en otros lenguajes:
Este es un ejemplo de cómo se utiliza multer en un formulario HTML. Presta especial atención en los campos `enctype="multipart/form-data"` y `name="uploaded_file"`:
<inputtype="text"class="form-control"placeholder="Number of speakers"name="nspeakers">
87
+
<inputtype="submit"value="Get me the stats!"class="btn btn-default">
88
+
</div>
89
+
</form>
90
+
```
91
+
92
+
Luego en tu archivo javascript agrega estas líneas para acceder tanto al archivo (file) como al body.Es importante que uses el valor del campo `name` del formulario, en tu función de subida. Esto le indica a multer en qué campo de la petición debe buscar los archivos. Si estos campos no son los mismos en el formulario HTML y en tu servidor, la subida fallará:
app.post('/stats', upload.single('uploaded_file'), function (req, res) {
98
+
// req.file es el nombre de tu archivo en el formulario anterior, en este caso 'uploaded_file'
99
+
// req.body contendrá los campos de texto, si los hubiera.
100
+
console.log(req.file, req.body)
101
+
});
102
+
```
103
+
104
+
105
+
79
106
## API
80
107
81
108
### Información del archivo
@@ -84,15 +111,15 @@ Cada archivo contiene la siguiente información:
84
111
85
112
Clave (Key) | Descripción | Nota
86
113
--- | --- | ---
87
-
`fieldname` | Es el nombre del campo especificado en el formulario |
114
+
`fieldname` | Nombre del campo especificado en el formulario |
88
115
`originalname` | Nombre del archivo en la computadora del usuario |
89
116
`encoding` | Tipo de codificación del archivo |
90
117
`mimetype` | Mime type del archivo |
91
118
`size` | Tamaño del archivo en Bytes |
92
-
`destination` | La carpeta en donde el archivo ha sido guardado | `DiskStorage`
119
+
`destination` | La carpeta donde se guardó el archivo | `DiskStorage`
93
120
`filename` | El nombre del archivo en `destination` | `DiskStorage`
94
-
`path` | El camino completo donde se ha subido el archivo (full path) | `DiskStorage`
95
-
`buffer` | Un `Buffer`con el archivo completo | `MemoryStorage`
121
+
`path` | La ruta completa al archivo subido | `DiskStorage`
122
+
`buffer` | Un `Buffer`del archivo completo | `MemoryStorage`
96
123
97
124
### `multer(opts)`
98
125
@@ -106,8 +133,8 @@ Clave (key) | Descripción
106
133
--- | ---
107
134
`dest` o `storage` | Donde se guardarán los archivos
108
135
`fileFilter` | Función para controlar qué archivos son aceptados
109
-
`limits` | Límites de los datos de subida
110
-
`preservePath` | Mantiene la dirección completa de la ubicación de los archivos, en vez de sólo sus nombres
136
+
`limits` | Límites de los datos subidos
137
+
`preservePath` | Mantiene la ruta completa de la ubicación de los archivos, en vez de sólo sus nombres
111
138
112
139
En la aplicación web promedio es probable que sólo se requiera `dest`, siendo configurado como en el siguiente ejemplo:
113
140
@@ -146,15 +173,15 @@ Acepta sólo campos de texto. En caso de intentar subir un archivo, se generará
146
173
147
174
#### `.any()`
148
175
149
-
Acepta todos los archivos que han sido enviado. Un arreglo (array) conteniendo los archivos será guardado en `req.files`.
176
+
Acepta todos los archivos que han sido enviados. Un arreglo (array) conteniendo los archivos, será guardado en `req.files`.
150
177
151
178
**ADVERTENCIA:** Asegúrate de siempre manejar los archivos que los usuarios intenten subir. Nunca uses Multer como una función middleware de manera global dado que, de esta forma, un usuario malicioso podría subir archivos por medio de rutas que no has anticipado. Usa sólo esta función en rutas en las que estás esperando archivos.
152
179
153
180
### `storage`
154
181
155
182
#### `DiskStorage`
156
183
157
-
El mecanismo de almacenamiento en el disco otorga completo control en la escritura de archivos en tu disco.
184
+
El motor de almacenamiento en disco te ofrece un control total sobre el almacenamiento de archivos en tu disco.
Hay dos opciones disponibles, `destination` y `filename`. Ambas son funciones que determinan dónde debería almacenarse el archivo.
173
200
174
-
`destination`es usado para determinar la capeta en donde los archivos subidos deberían ser almacenados. Esto también puede ser informado mediante un `string` (por ejemplo: `'/tmp/uploads'`). Si ninguna propiedad `destination` es dada, entonces será usado el directorio por defecto en donde el sistema operativo almacena sus archivos temporales.
201
+
`destination`se utiliza para determinar en qué carpeta se almacenarán los archivos subidos. Tambien se puede proporcionar como un `string` (por ejemplo: `'/tmp/uploads'`). Si no se proporciona `destination`, se utilizara el directorio predeterminado del sistema operativo para archivos temporales.
175
202
176
-
**Nota:** Al pasar `destination` como una función, tú eres el responsable de crear los directorios donde los archivos serán almacenados. Cuando un `string`es dada a `destination`, Multer se asegurará de que el directorio sea creado en caso de no encontrar uno.
203
+
**Nota:** Al pasar `destination` como una función, tú eres el responsable de crear los directorios donde los archivos serán almacenados. Cuando asignas un `string` a `destination`, Multer se asegurará de que el directorio sea creado en caso de no encontrarlo.
177
204
178
205
`filename` es usado para determinar cómo debería ser nombrado el archivo dentro de la carpeta. Si `filename` no es provisto, a cada archivo se le asignará un nombre aleatorio que no incluirá ninguna extensión.
179
206
180
-
**Nota:** Multer no añadirá ningúna extensión de archivos por ti, es tu función la que debería retornar un nombre completo, incluyendo también la extensión del archivo.
207
+
**Nota:** Multer no añadirá ningúna extensión de archivos por ti, es tu función la que debería retornar un nombre completo, que incluya también la extensión del archivo.
181
208
182
209
El objeto petición (`req`) y parte de la información del archivo (`file`) son pasadas a tu función para ayudar con la decisión en la nomenclatura.
183
210
184
211
Nota que `req.body` puede que no haya sido totalmente poblado todavía. Esto depende del orden en el que el cliente transmita sus campos y archivos hacia el servidor.
185
212
213
+
Para comprender la convención de llamada utilizada en el callback (necesitas pasar null como primer parametro), consulta en
214
+
[Node.js manejo de errores](https://web.archive.org/web/20220417042018/https://www.joyent.com/node-js/production/design/errors)
215
+
186
216
#### `MemoryStorage`
187
217
188
-
El mecanismo de almacenamiento en memoria almacena los archivos en la memoria en forma de objetos `Buffer`. Para esto no se proveen opciones.
218
+
El motor de almacenamiento en memoria almacena los archivos en memoria como objetos `Buffer`. Para esto no se proveen opciones.
189
219
190
220
```javascript
191
221
conststorage=multer.memoryStorage()
@@ -198,15 +228,15 @@ Al usar el almacenamiento en memoria, la información del archivo contendrá un
198
228
199
229
### `limits`
200
230
201
-
Un objeto que especifica los límites correpondientes a los tamaños de las siguientes propiedades. Multer pasa este objeto directamente a *busboy*, los detalles de las propiedades pueden encontrarse en [la página de busboy](https://github.com/mscdex/busboy#busboy-methods).
231
+
Un objeto especifica los límites correpondientes a los tamaños de las siguientes propiedades opcionales. Multer pasa este objeto directamente a *busboy*, los detalles de las propiedades pueden encontrarse en [la página de busboy](https://github.com/mscdex/busboy#busboy-methods).
202
232
203
233
Los siguientes valores en números enteros están disponibles:
204
234
205
235
Clave (Key) | Descripción | Por defecto
206
236
--- | --- | ---
207
237
`fieldNameSize` | Tamaño máximo del nombre del campo | 100 bytes
208
238
`fieldSize` | Tamaño máximo de los valores para cada campo (en bytes) | 1MB
209
-
`fields` | Número máximo de la cantidad de campos | Infinito
239
+
`fields` | Número máximo de campos que no son archivos | Infinito
210
240
`fileSize` | Para formularios multiparte, el tamaño máximo de los archivos (en bytes) | Infinito
211
241
`files` | Para los formularios multiparte, el número máximo de campos para archivos | Infinito
212
242
`parts` | Para los formularios multiparte, el número máximo de partes (campos + archivos) | Infinito
@@ -216,7 +246,7 @@ Especificar los límites puede ayudarte a proteger tu sitio contra ataques de de
216
246
217
247
### `fileFilter`
218
248
219
-
Asigna ésto a una función que controle cuáles archivos deben ser subidos y cuáles deben ser omitidos. La función debería verse como ésta:
249
+
Asigna ésto a una función para controlar cuáles archivos deben ser subidos y cuáles deben ser omitidos. La función debería verse como ésta:
0 commit comments