Moin Leute,
ich habe hier ein kleines Downloadservlett für den Download aus einer DB gebastelt, aber es gibt noch ein Problem:
Als Filename wird immer der Name des Servletts angeboten. Es gibt Parameter um Namen und Filetyp festzulegen (CONTENT_DISPOSITION), aber ich bekomme es nicht hin…
import javax.servlet.\*;
import javax.servlet.http.\*;
import java.io.\*;
import java.util.\*;
import java.sql.\*;
import java.lang.System;
public class DownLoadTest2 extends HttpServlet
{
private static final String CONTENT\_TYPE = "image/jpeg";
private static final String CONTENT\_DISPOSITION = "application, filename='My\_Excel.xls'";
private String className;
private String dbURL;
private String dbUser;
private String dbPasswd;
private String dbSQL1;
private String dbSQL2;
public void init(ServletConfig config) throws ServletException
{
super.init(config);
ServletContext context = getServletContext();
className = context.getInitParameter("className");
dbURL = context.getInitParameter("dbURL");
dbUser = context.getInitParameter("dbUser");
dbPasswd = context.getInitParameter("dbPasswd");
dbSQL1 = context.getInitParameter("dbSQL1");
dbSQL2 = context.getInitParameter("dbSQL2");
// System.out.println("---------------------");
// System.out.println(className);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
Integer ObiId = null;
String reqObiId = "";
ResultSet rs = null;
int SqlId = 0;
ServletOutputStream out = response.getOutputStream();
Connection dbCon = null;
if (request.getParameter("id")!=null) {reqObiId = request.getParameter("id");}
try {
ObiId = new Integer(reqObiId);
}
catch (Exception ex) {
ex.printStackTrace();
}
SqlId = Integer.parseInt(request.getParameter("SqlId"));
try {
Class.forName( className );
dbCon = DriverManager.getConnection(dbURL,dbUser,dbPasswd );
Statement st = dbCon.createStatement();
// System.out.println(SqlId);
switch (SqlId) {
case 1 : rs = st.executeQuery(dbSQL1+ObiId.toString()); break;
case 2 : rs = st.executeQuery(dbSQL2+ObiId.toString()); break;
}//switch
//String.valueOf(ObiId));
if( rs.next() )
{
InputStream is = rs.getBinaryStream( "COL1" );
BufferedOutputStream bos = new BufferedOutputStream(out);
byte[] buff = new byte[8192];
int len;
while( 0