salve a tutti
vi prego di armarvi di buona paziena e di darmi una mano, scusate la lunghezza del messaggio ma volevo essere quanto più chiaro possibile.
ho la necessità di permettere il download di immagini tramite readfile() di php. la cosa non mi crea alcun problema se fatta in semplice php. il problema è farlo in ajax, per questo ho postato qui.
ecco un pò di codice:
----------------------------------------------
PARTE JAVASCRIPT
Codice PHP:
var ora;
function GetXmlHttpObject()
{
if (window.XMLHttpRequest) return new XMLHttpRequest();
if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
return null;
}
function smgo(percorso){
ora = GetXmlHttpObject();
if(ora==null){
alert("Aggiornare il browser!");
return;
}
var url = "opera.php";
ora.onreadystatechange=lavora;
ora.open("POST", url, true);
ora.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ora.send("percorso="+percorso);
}
function lavora(){
if(ora.onreadyState == 4)
//--che devo fare qui?
}
----------------------------------------------
PARTE HTML
Codice PHP:
<button onclick="smgo('immagini/1.jpg')">salva</button>
----------------------------------------------
PARTE PHP
Codice PHP:
$attuale = $_REQUEST['percorso'];
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($attuale));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($attuale));
readfile($attuale);
----------------------------------------------
SPIEGAZIONE CODICE E RICHIESTA
-GetXmlHttpObject mi crea l'oggetto per le richieste asincrone
-smgo prende il percorso del file da scaricare che viene passato con method post alla pagina opera.php, inoltre invoca la funzione lavora al cambio di stato della richiesta
-lavora in teoria dovrebbe far comparire la finestra per il download
Come devo strutturare la funzione lavora affinchè compaia la finestra di download?
Grazie in anticipo per la risposta