# FormData

Sirve para enviar datos binarios mediante [XMLHttpRequest](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/xmlhttprequest).&#x20;

Requiere importarla previamente a su uso:&#x20;

```javascript
importClass("FormData");
```

## Indice de funciones

### Constructor

FormData FormData()

### Generales

append( clave, VFile( Senda ) )

append( clave, texto )

## Documentación de funciones

### Constructor

FormData [FormData](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/formdata)()

### Funciones generales

#### append( clave, [VFile](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vfile)( Senda ) )

Permite añadir un fichero al envío de una petición XMLHttpRequest.

Parámetros:

* clave: nombre del parámetro correspondiente al binario a enviar.
* [VFile](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vfile)( Senda ): senda del fichero a enviar.

Para enviar el FormData hay que pasarlo como parámetro en la funcion [send( VByteArray data )](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/xmlhttprequest#send-1) de la clase [XMLHttpRequest](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/xmlhttprequest).

#### append( clave, texto )

Permite añadir un texto al envío de una petición XMLHttpRequest.

Parámetros:

* clave: nombre del parámetro a enviar en la petición.
* texto: valor del parámetro.

Para enviar el FormData hay que pasarlo como parámetro en la funcion void [send( String data )](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/xmlhttprequest#send) de [XMLHttpRequest](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/xmlhttprequest).

## Ejemplo

Un proceso JavaScript que envía un fichero en una petición XMLHttpRequest. Los datos de URL, etc. los toma de variables locales definidos en el mismo.

```javascript
importClass("VFile");
importClass("XMLHttpRequest");
importClass("FormData");
 
function uploadFile(filename) {
    // Create FormData object
    var formData = new FormData();

    // Append the filename directly (empty content)
    formData.append('file', new VFile(filename));

    // Create XMLHttpRequest object
    var xhr = new XMLHttpRequest();
    
    // Configure the request
    xhr.open('POST', theRoot.varToString("URL"), false);

	 // Send the FormData with the file
    xhr.send(formData);
	
	if ( (xhr.errorCode==0) && (xhr.status == 200) ) {
		theRoot.setVar("RES", "Subido con FormData " + xhr.responseText );
	}else{
		alert("Error");
	}
      
  }

  // Ejemplo de uso
  var filename = theRoot.varToString("SND");  
  uploadFile(filename);
```
