Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS ProArt GoPro Edition è il notebook compatto per chi crea
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
Un notebook sviluppato in collaborazione con GoPro ma che risponde al meglio alle necessità di tutti coloro che creano contenuti video: robustezza, design, potenza di calcolo e funzionalità si abbinano al meglio tra di loro, pur se a prezzo di un costo elevato per via della tanta memoria onboard
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Lenovo ha lanciato il ThinkTab X11 rimettendo piede nel segmento dei tablet Android con il marchio Think dopo oltre un decennio di assenza. Il risultato è un dispositivo che prende una direzione precisa: massima dotazione funzionale, costruzione resistente, autonomia fuori dagli schemi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-12-2011, 19:05   #1
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
[JAVA + AJAX] Scaricare un file con AJAX da una servlet

Salve a tutti!
Ho una servlet che si occupa di gestire le richieste AJAX. Il problema è che non riesco a implementare la funzione di download di un file via AJAX. Sulla pagina web ho un pulsante con la funzione javascript download registrata per l'evento onclick:
Codice PHP:
function ajaxRequest(methodparameters) {
    var 
XMLHttpReq;
    try {
        
XMLHttpReq = new XMLHttpRequest();
    } catch (
e) {
        try {
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP.6.0");} catch(e) {}
        try {
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP.3.0");} catch(e) {}
        try {
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");} catch(e) {}
        try {
XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");}
        catch(
e) {return "!!AJAXERROR!!Impossibile creare una richiesta AJAX.";}
    }
    
    var 
strRequestParams "";
    if (
isArray(parameters)) {
        for (var 
0parameters.lengthi++) {
            
strRequestParams strRequestParams "&" parameters[i];
        }
    } else if (
isHash(parameters)) {
        var 
keys parameters.getKeys();
        for (var 
0keys.lengthi++) {
            
strRequestParams strRequestParams "&" keys[i] + "=" parameters[i];
        }
    } else {
        
strRequestParams parameters;
    }
    
    
XMLHttpReq.open("post"getBaseURL()+"ajaxrequest.do"false);
    
XMLHttpReq.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
    
XMLHttpReq.send("method="+method+strRequestParams);
    return 
XMLHttpReq.responseText;
}

function 
downloadFile(idDocumento) {
    var 
ajaxResponse ajaxRequest("downloadFile", new Array("idDocumento="+idDocumento));
    
alert(ajaxResponse);

Tale funzione richiama la servlet che esegue il metodo seguente:
Codice PHP:
private void downloadFile() {
        try {
            
long idDocumento Long.parseLong(request.getParameter("idDocumento"));
            
GeScuolaOperations gso GeScuolaServiceFactory.getInstance().getGeScuolaService();
            
Documento doc gso.getDocDetails(new Documento(idDocumento));
            
response.setContentType("application/octet-stream"); 
            
response.setHeader("Content-Disposition""attachment;filename=\"" doc.getNome() + "\"");
            
response.setIntHeader("Content-Length"doc.getContenuto().length);
            
response.getOutputStream().write(doc.getContenuto());
        } catch (
Throwable t) {
            
sendErrorResponse(t);
        }
        return;
    } 
Sul client ricevo nell'alert il contenuto del file, però non mi appare la finestra per salvare il file.
Sapete dirmi come posso realizzare questa cosa?

Grazie!

Ultima modifica di VegetaSSJ5 : 09-12-2011 alle 22:56.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2011, 22:55   #2
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
Mi rispondo da solo.
Forse i browser non hanno ancora implementato (magari volutamente) il download di file da una richiesta AJAX.
Per risolvere è bastato aprire una nuova pagina popup tramite javascript con la window.open per scaricare il file.
Per completezza metto il codice della funzione javascript.
Codice PHP:
function downloadFile(idDocumento) {
    
window.open(getBaseURL()+"ajaxrequest.do?method=downloadFile&idDocumento="+idDocumento"Download documento""location=no,menubar=no,resizable=no,titlebar=no,toolbar=no");


Ultima modifica di VegetaSSJ5 : 09-12-2011 alle 22:57.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
S.T.A.L.K.E.R. 2: il DLC Cost of Hope ad...
I nuovi modelli di IA di Microsoft per l...
Come sta cambiando il mestiere dell'inst...
Meta sospende i test sull'abbonamento pe...
TCL OLED+ Pro X3B: monitor gaming o prof...
Safe Superintelligence stringe una partn...
Windows 11 divora RAM, Microsoft lo amme...
Recensione OPPO Reno16 5G: compatto, ele...
OPPO Reno 16 Series, fotografia ed editi...
BMW i4 Cabrio nel 2028: le indiscrezioni...
Un semplice errore di battitura gli stra...
Crepet: 'L'intelligenza artificiale ci r...
GrapheneOS cancella i dati di un Pixel a...
Far Cry: cancellato il progetto Maverick...
NVIDIA pronta a garantire fino a 250 mil...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:59.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v