Passare ad uno script PHP i dati di un form incluso l'upload di un'immagine

Luca Darken Coraggio

Nuovo Utente
28 Apr 2013
6
0
0
Salve
vorrei sapere se è possibile effettuare chiamate POST ad uno script PHP per fare la duplice operazione di passaggio dati di un form e upload di un'immagine..
Prendiamo questo form

HTML:
Titolo <input id="titolo" style="width:300px"></input> 
Allega un'immagine <input id="immagine" type="file" name="immy" accept="image/*" size="40"/><br/><br/>
Per trasmettere il parametro immesso in "titolo" non ho nessun problema


PHP:
var ajaxReq = new XMLHttpRequest();
						 						
var params = "titolo="+$('#titolo').val()
var url = "registraDati.php";
									 									 
ajaxReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajaxReq.setRequestHeader("Content-length", params.length);
ajaxReq.setRequestHeader("Connection", "close"); 

ajaxReq.send(params)
Ma il problema è come gestire invece l'upload dell'immagine? La devo piazzare tra i params? Devo usare il FormData?
In conclusione è possibile fare entrambe le operazioni in un'unica mossa?

In alternativa, non ci son problemi a creare due script distinti (uno per passare i parametri "testuali" e l'altro per i file).. A tal proposito ho già provato questo scritp senza successo
PHP:
    var file_data = $("#immagine").files[0];   // Getting the properties of file from file field
    var form_data = new FormData();                  // Creating object of FormData class
    form_data.append("afile", file_data)              // Appending parameter named file with properties of file_field to form_data
    form_data.append("user_id", 123)                 // Adding extra parameters to form_data
   
    var xhr = new XMLHttpRequest();
xhr.open('POST', 'uploadImmagine.php', true);
 xhr.send(form_data);
mi dà errore su files[0] in quanto dice che è un metodo non definito