PDA

View Full Version : [php + js] Upload


ianaz
19-12-2006, 19:14
Salve, sto facendo un upload tramite javascrit in modo che non bisogna ricaricare la pagina.

Il codice della pagina html é:

<form name="iform" action="" method="post" enctype="multipart/form-data">
<input id="file" type="file" name="image" onchange="uploadPersonalImage();">
</form>

mentre il codice javascript é


function uploadPersonalImage()
{
var par = window.parent.document;
var new_iframe = par.createElement('iframe');
new_iframe.style.visibility = "hidden";
new_iframe.src = 'ajaxPages/upload_personal_image.php';
new_iframe.frameBorder = '0';
new_iframe.height = "0px";

par.getElementById('iframe').appendChild(new_iframe);
document.iform.submit();
}

In questo modo, visto da un esempio, invia proprio l'immagine all'iframe senza caricare la pagina, ma a me non funziona.
La pagina php non riceve $_FILES['image']['tmp_name']



Non riesco proprio a trovare una soluzione, grazie

max246
19-12-2006, 19:58
io so come aiutarti e ora ti spiego:

1)
nel tag <form aggiungi questo attributo
target="iframe_up"
poi sempre nel form cambia l'action con
"ajaxPages/upload_personal_image.php"
e infine modifichi il codice JS così:


function uploadPersonalImage()
{
var par = window.parent.document;
var new_iframe = par.createElement('iframe');
new_iframe.style.visibility = "hidden";
new_iframe.setAttribute('name','iframe_up');
new_iframe.frameBorder = '0';
new_iframe.height = "0px";

par.getElementById('iframe').appendChild(new_iframe);
document.iform.submit();
}



Ora ti spiego il perchè, tu devi mandare tutte le informazioni del post a un iframe perciò nel target gli dai il nome dell'iframe. Poi come azione gli dici che deve andare a quella pagina......

Poi nel codice JS gli dai l'attributo name così che il target funzioni :)

ianaz
19-12-2006, 20:03
Perfetto, grazie mille.
Proprio quello che cercavo ;)


Grazie