J'ai le même objectif que toi.
Tomcat : apache-tomcat-6.0.32
J'utilise une GenericServlet étant donné que quand j'utilise une HttpServlet, j'ai l'erreur :
La méthode HTTP spécifiée n'est pas autorisée pour la ressource demandée (La méthode HTTP POST n''est pas supportée par cette URL).
J'imagine qu'il me manque un jar, à tomcat, j'ai bien ajouté javax.servlet.jar dans apache-tomcat-6.0.32\webapps\ROOT\WEB-INF\lib
Voici l'erreur que j'obtiens donc avec la GenericServlet :
java.io.IOException: Invalid header signature; read 0x352E312D46445025, expected 0xE11AB1A1E011CFD0
Voici le code de ma Servlet.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| package servlet;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class Download extends GenericServlet {
private static final long serialVersionUID = 1L;
@Override
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
FileInputStream fileInputStream = new FileInputStream("C:\\test.pdf");
ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
HSSFWorkbook wb = new HSSFWorkbook(fileInputStream);
wb.write(baos);
byte[] bytes = baos.toByteArray();
String tab = bytes.toString();
OutputStream stream = response.getOutputStream();
response.setContentType("application/pdf");
response.setBufferSize(tab.length());
PrintWriter flux = new PrintWriter(stream);
flux.append(tab);
flux.flush();
flux.close();
}
} |
Partager