2011-11-04 16 views
7

seguito il codice Java viene utilizzato per scaricare un file di log richiesto throgh un'applicazione web:Lo spazio vuoto in questione il nome del file durante il download di file

protected HttpServletResponse response; 
.... 

    response.setContentType("application/octet-stream"); 
    String filename = OrgName + ".log"; 
    response.setHeader("Content-Disposition", "attachment; filename= " + filename); 
    OutputStream os = response.getOutputStream(); 
    os.write(getFile()); 
    os.close(); 

problema nasce quando OrgName contiene uno spazio come "Xyz Pvt Ltd", in questo file del caso verrà scaricato con il nome "Xyz" piuttosto che "Xyz Pvt Ltd.log". La parte del nome dopo il primo spazio viene ignorata. Si noti che il file viene scaricato correttamente, è solo il nome che non viene visualizzato correttamente. C'è qualcosa che sto sbagliando? o è un comportamento standard?

Ambiente: Struts 2, Jboss 5.1.0, Mozilla Firefox 3.5.3

+0

Penso che dipenda dal browser. Ho appena provato in IE (8.0) Chrome e ha funzionato. – Santosh

risposta

13

Penso di aver trovato il tuo problema. Basta impostare la stringa del nome del file come quotata

response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\""); 

Questo dovrebbe risolvere il tuo problema.

+0

Sì, ha funzionato. Molte grazie :) –

0

penso che si dovrebbe usare una codifica per spazi È possibile guardare in encoder base64 apache, mi ricordo che gli spazi diventano codificato a% 20% e quindi alla decodifica sarai in grado di recuperare il nome file con spazi.

+0

Se lo fai, ci vorrà% 20% come parte del nome del file stesso e non lo mostrerà come spazio. – Santosh

Problemi correlati