2012-12-03 14 views
5

Chcę, aby przepis pobrać wszystkie typy plików ... Czy istnieje jakiś sposób, aby pobrać dowolny format pliku JSP ...Jaki powinien być typ zawartości, aby pobrać dowolny format pliku w jsp?

Moje urywek kodu:

String filename = (String) request.getAttribute("fileName");   
    response.setContentType("APPLICATION/OCTET-STREAM"); 
    String disHeader = "Attachment"; 
    response.setHeader("Content-Disposition", disHeader); 

    // transfer the file byte-by-byte to the response object 
    File fileToDownload = new File(filename); 
    response.setContentLength((int) fileToDownload.length()); 
    FileInputStream fileInputStream = new FileInputStream(fileToDownload); 
    int i = 0; 
    while ((i = fileInputStream.read()) != -1) { 
     out.write(i); 
    } 
    fileInputStream.close(); 

Gdybym określić jako setContentType APLIKACJA/OCTET-STREAM, pdf, tekst, pliki dokumentów są pobierane .... Ale problem dotyczy plików obrazów ...

Co jest problemem z plikami graficznymi? Chcę pobrać wszystkie typy plików graficznych ...

Szukałem podobne pytania, ale nie mógł znaleźć właściwą odpowiedź ... Dzięki ...

+2

spróbować 'response.setHeader ("Content-Disposition",„attachment; filename = "+ filename"; ' – adatapost

+2

Istnieje [całe mnóstwo typów mime graficznego] (http://www.webmaster-toolkit.com/mime-types.shtml), a opłaca się być konkretnym: – Makoto

+0

@AVD: Próbowałem, że ... to nie pomaga :( – loknath

Odpowiedz

3

W końcu jakoś udało się to zrobić ... Problem jest z JSP " Out.write”, który nie jest zdolny do zapisu strumienia bajtów ...

Wymieniłem plik JSP z serwletu ...

fragment kodu jest:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    try { 
     String filename = (String) request.getAttribute("fileName"); 
     response.setContentType("application/octet-stream"); 
     response.setHeader("Content-Disposition", 
       "attachment;filename="+filename); 

     File file = new File(filename); 
     FileInputStream fileIn = new FileInputStream(file); 
     ServletOutputStream out = response.getOutputStream(); 

     byte[] outputByte = new byte[(int)file.length()]; 
     //copy binary contect to output stream 
     while(fileIn.read(outputByte, 0, (int)file.length()) != -1) 
     { 
     out.write(outputByte, 0, (int)file.length()); 
     } 
    } 

Teraz mogę pobrać wszystkie typy plików ....

Dzięki za responces :)

Powiązane problemy