Skip to content

Commit 0e67b30

Browse files
authored
Merge pull request #1174 from juliomontenegro/master
Improved documentation translation to Spanish
2 parents 42ba0fb + b1c1960 commit 0e67b30

File tree

1 file changed

+52
-22
lines changed

1 file changed

+52
-22
lines changed

doc/README-es.md

Lines changed: 52 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
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.
44

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`).
66

77
## Traducciones
88

99
Éste archivo README también está disponible en otros lenguajes:
1010

11-
- [Engilsh](https://github.com/expressjs/multer/blob/master/README.md) (Inglés)
11+
- [English](https://github.com/expressjs/multer/blob/master/README.md) (Inglés)
1212
- [简体中文](https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md) (Chino)
1313
- [한국어](https://github.com/expressjs/multer/blob/master/doc/README-ko.md) (Coreano)
1414
- [Русский язык](https://github.com/expressjs/multer/blob/master/doc/README-ru.md) (Ruso)
@@ -42,13 +42,13 @@ const upload = multer({ dest: 'uploads/' })
4242
const app = express()
4343

4444
app.post('/profile', upload.single('avatar'), function (req, res, next) {
45-
// req.file es el `avatar` del archivo
46-
// req.body tendrá los campos textuales, en caso de haber alguno.
45+
// req.file es el archivo del `avatar`
46+
// req.body contendrá los campos de texto, si los hubiera.
4747
})
4848

4949
app.post('/photos/upload', upload.array('photos', 12), function (req, res, next) {
5050
// req.files es el arreglo (array) de archivos `photos`
51-
// req.body tendrá los campos textuales, en caso de haber alguno.
51+
// req.body contendrá los campos de texto, si los hubiera.
5252
})
5353

5454
const cpUpload = upload.fields([{ name: 'avatar', maxCount: 1 }, { name: 'gallery', maxCount: 8 }])
@@ -59,11 +59,11 @@ app.post('/cool-profile', cpUpload, function (req, res, next) {
5959
// req.files['avatar'][0] -> Archivo
6060
// req.files['gallery'] -> Array
6161
//
62-
// req.body tendrá los campos textuales, en caso de haber alguno.
62+
// req.body contendrá los campos de texto, si los hubiera.
6363
})
6464
```
6565

66-
En caso de que necesites manejar un formulario multiparte (multipart form) que sólo contiene campos de texto, recomendamos usar el método `.none()`:
66+
En caso de que necesites manejar un formulario multiparte (multipart form) que sólo contiene campos de texto, deberias usar el método `.none()`:
6767

6868
```javascript
6969
const express = require('express')
@@ -76,6 +76,33 @@ app.post('/profile', upload.none(), function (req, res, next) {
7676
})
7777
```
7878

79+
80+
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"`:
81+
82+
```html
83+
<form action="/stats" enctype="multipart/form-data" method="post">
84+
<div class="form-group">
85+
<input type="file" class="form-control-file" name="uploaded_file">
86+
<input type="text" class="form-control" placeholder="Number of speakers" name="nspeakers">
87+
<input type="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á:
93+
94+
```javascript
95+
const multer = require('multer')
96+
const upload = multer({ dest: './public/data/uploads/' })
97+
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+
79106
## API
80107

81108
### Información del archivo
@@ -84,15 +111,15 @@ Cada archivo contiene la siguiente información:
84111

85112
Clave (Key) | Descripción | Nota
86113
--- | --- | ---
87-
`fieldname` | Es el nombre del campo especificado en el formulario |
114+
`fieldname` | Nombre del campo especificado en el formulario |
88115
`originalname` | Nombre del archivo en la computadora del usuario |
89116
`encoding` | Tipo de codificación del archivo |
90117
`mimetype` | Mime type del archivo |
91118
`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`
93120
`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`
96123

97124
### `multer(opts)`
98125

@@ -106,8 +133,8 @@ Clave (key) | Descripción
106133
--- | ---
107134
`dest` o `storage` | Donde se guardarán los archivos
108135
`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
111138

112139
En la aplicación web promedio es probable que sólo se requiera `dest`, siendo configurado como en el siguiente ejemplo:
113140

@@ -146,15 +173,15 @@ Acepta sólo campos de texto. En caso de intentar subir un archivo, se generará
146173

147174
#### `.any()`
148175

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`.
150177

151178
**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.
152179

153180
### `storage`
154181

155182
#### `DiskStorage`
156183

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.
158185

159186
```javascript
160187
const storage = multer.diskStorage({
@@ -171,21 +198,24 @@ const upload = multer({ storage: storage })
171198

172199
Hay dos opciones disponibles, `destination` y `filename`. Ambas son funciones que determinan dónde debería almacenarse el archivo.
173200

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.
175202

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.
177204

178205
`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.
179206

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.
181208

182209
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.
183210

184211
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.
185212

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+
186216
#### `MemoryStorage`
187217

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.
189219

190220
```javascript
191221
const storage = multer.memoryStorage()
@@ -198,15 +228,15 @@ Al usar el almacenamiento en memoria, la información del archivo contendrá un
198228

199229
### `limits`
200230

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).
202232

203233
Los siguientes valores en números enteros están disponibles:
204234

205235
Clave (Key) | Descripción | Por defecto
206236
--- | --- | ---
207237
`fieldNameSize` | Tamaño máximo del nombre del campo | 100 bytes
208238
`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
210240
`fileSize` | Para formularios multiparte, el tamaño máximo de los archivos (en bytes) | Infinito
211241
`files` | Para los formularios multiparte, el número máximo de campos para archivos | Infinito
212242
`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
216246

217247
### `fileFilter`
218248

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:
220250

221251
```javascript
222252
function fileFilter (req, file, cb) {

0 commit comments

Comments
 (0)