Hi!
maybe someone can help me on this problem:
i'm trying to send a file from a
servlet back to an
applet, so
that the user on the client side can download it.
i think the code on the server-side is not the problem, because
if i use html as the front-end, i can download the file.
I'm using this code to connect to the servlet:
URL url=new URL(getCodeBase(), "/servlet/FileServlet");
URLConnection connection=url.openConnection();
connection.setUseCaches(false);
connection.setDoOutput(true);
connection.setDoInput(true);
ByteArrayOutputStream bs=new ByteArrayOutputStream(512);
PrintWriter out=new PrintWriter(bs,true);
String val=URLEncoder.encode("bar");
String data="foo="+val;
out.print(data);
out.flush();
connection.setRequestProperty("Content-Length",String.valueOf(bs.size()));
connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
bs.writeTo(connection.getOutputStream());
On the server-side i use this code to send back the file:
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
ServletOutputStream out = res.getOutputStream ();
res.setContentType( "application/pdf" );
String fileURL ="file:///c:/test.pdf";
res.setHeader("Content-disposition","attachment; filename=test.pdf" );
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
URL url = new URL(fileURL );
bis = new BufferedInputStream(url.openStream());
bos = new BufferedOutputStream(out);
byte[] buff = new byte[2048];
int bytesRead;
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch(final MalformedURLException e) {
System.out.println ( "MalformedURLException." );
throw e;
} catch(final IOException e) {
System.out.println ( "IOException." );
throw e;
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
}
}
I know, that i have to use an inputstream on the client-side to get data from the servlet, but if ever used one, i could send it to an textarea or something like that, but i never were able to download it as a file.