Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Abbiamo provato per dieci giorni la Hyundai IONIQ 5 N, con 650 CV, 770 Nm e uno 0-100 km/h in 3,4 secondi. Il suo punto forte è N e-Shift, che simula un cambio a otto rapporti con suoni da motore termico e perfino un bang supersonico
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-12-2011, 20: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(method, parameters) {
    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 
i = 0; i < parameters.length; i++) {
            
strRequestParams = strRequestParams + "&" + parameters[i];
        }
    } else if (
isHash(parameters)) {
        var 
keys = parameters.getKeys();
        for (var 
i = 0; i < keys.length; i++) {
            
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 23:56.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2011, 23: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 23:57.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
I 5 robot per le pulizie più scon...
Apple annuncia i nuovi MacBook Pro con s...
Warhorse Studios colpita da un grave att...
MX Master 4, arriva l'edizione speciale ...
Kali Linux 2026.3 porta la caccia alle r...
Oracle si affida a OpenAI: ChatGPT e Cod...
Kaspersky punta su IA e servizi gestiti ...
Già sfruttata la falla Brotli che...
Potrebbe essere stato scoperto un nuovo ...
Claude Code, il prompt per scovare telec...
Palit e GALAX smentiscono le voci sulla ...
Fujifilm annuncia la Instax Mini Evo 2, ...
Tailscale chiude le falle SSH verso root...
Il tuo Galaxy laggava nei giochi? Samsun...
Arrivano i nuovi Amazon Echo: prezzi da ...
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: 06:52.


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