# Recibe subidas de ficheros

> Acepta multipart/form-data con el flag @upload y lee los ficheros subidos desde $.files.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: es
Content-SHA256: 9af3b492f2e89d22320d7200ac4de9e06ec31002a3d9e09c4b6b4e1dd3ee8f76
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

Marca la ruta con `@upload` para que solo acepte `multipart/form-data` y fija un límite de tamaño adecuado a los ficheros que esperas (aquí `<5mb`). Los ficheros subidos están en `$.files`; los demás campos del formulario están en `$.body`. Cada fichero tiene `name`, `filename`, `size` y `type`, y métodos como `read()`, `copy()` y `move()`.

```js controllers/upload.js
exports.install = function() {
	ROUTE('POST /upload/ @upload <5mb', upload);
};

function upload($) {

	var file = $.files[0];

	if (!file) {
		$.invalid('No file');
		return;
	}

	file.read(function(err, buffer) {
		$.json({
			filename: file.filename,
			size: file.size,
			type: file.type,
			text: buffer.toString('utf8'),
			title: $.body.title
		});
	});
}
```
