ho una questione da porvi, vorrei sapere se possibile caricare un file con ajax e php senza usare l'iframe?
Se si come ? grazie :)
ho una questione da porvi, vorrei sapere se possibile caricare un file con ajax e php senza usare l'iframe?
Se si come ? grazie :)
Questo fa al caso tuo, ma è in Inglese: http://www.ajaxf1.com/tutorial/ajax-...-tutorial.html
Buongiorno,
Vorrei aggiungere un quesito, che spero sia in tema.
Riguara l' upload di file con Ajax.
Abbiamo un oggetto
xmlHt = new XMLHttpRequest();
Che invia un file 'f_up' al server con
una chiamata asincrona:
xmlHt.open("POST","up_beta.php",true);
// eventuali setRequestHeader , ecc. ecc.
xmlHt.send('f_up');
A questo punto, una volta che il file è arrivato as server,
deve essere gestito: controllato ancora, piazzato nella directory giusta ecc. ecc.
Orbene, una chiamata così non passa da un normale form e non viene avviata
da un input type = "submit", ma dall' evento onclick di
un bottone comune, input type = "button".
Quindi, se non sbaglio, non viene impostata $_FILES[] del php, che avrebbe tutti i
parametri necessari.
Allora, come fa il php a recuperare il nome e la locazione del file uplodato?
Ho visto che tutti lo fanno benissimo, cercando in una cartella
temporanea del server, ma non mi è per nulla chiaro come.
Grazie a chi vorrà inviare un commento.
Alessandro
Spiacente deludere entrambi ma l'upload asincrono (puro) non è possibile farlo.
Occorre inviare l'intero modulo (quindi evento submit) ad un iframe per effettuare il caricamento senza aggiornare la pagina.
Mi spiace contraddirti, ma è possibile. È sufficiente usare l'oggetto XMLHttpRequest (quello descritto nelle specifiche di livello 2) e la proprietà files (introdotta nelle bozze di HTML5) dell'oggetto HTMLInputElement rappresentante l'elemento input che permette all'utente di scegliere i file da caricare.
AlessandroLin: l'implementazione può essere complessa, per questo ti consiglio di usare soluzioni già pronte.
Noi non andiamo daccordo.
E' una questione di visione delle cose.
Ok. Hai ragione, in HTML5 è possibile. Ma, contrariamente a come la vedi tu, per me lasciare fuori il 50% dei browser (ti piaccia o no IE in versione < 8 rappresenta ancora una buona fetta dei browser in unso) per me non ha senso.
Ma non sono tagliati fuori, se il browser non supporta queste tecnologie (o più semplicemente ha Javascript disabilitato) il caricamento avverrà alla vecchia maniera. Il trucco sta nel creare un normale e comunissimo modulo di caricamento file e successivamente senza "smontarlo" introdurre mediante Javascript il caricamento mediante XHR.
Il che è verissimo, direi.
In fondo ... con l' iframe si è sempre andati bene e pochi browser implementano l'html5 come dici.
Ciao
Alessandro
EDIT:
Già. E' inutile starci sopra più di tanto.
Comunque giusto per amore di discussione, ho visto che viene adoperato
talvolta un filtro del php, precisamente "php://input",
per intercettare il flusso che arriva al server.
Altri usano un componente Java per recuperare le intestazioni.
Niente di semplice, comunque.
Ciao
Alessandro
Ultima modifica di alemoppo : 19-06-2012 alle ore 12.22.14 Motivo: Non fare post consecutivi: usa il tasto "Edita" per editare i messaggi