以前看到的的例子都是如何装服务器端某文件下载到客户端的。
我现在想实现装String变量的内容下载到客户端。
下面这段代码不能实现啊。各位大侠帮忙看看?谢谢download servlet
------------------------------------------------------
response.setContentType(CONTENT_TYPE);
request.setCharacterEncoding("GBK");
String ContStr = request.getParameter("Desc");
String SaveAsFileName = request.getParameter("filename"); System.out.println("串内容:"+ContStr);
response.reset();
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition","attachment; filename=\"" + SaveAsFileName + "\""); ByteArrayInputStream in = new ByteArrayInputStream(ContStr.getBytes());
byte[] b = new byte[100];
int len = 0; while((len=in.read(b)) >0)
{
response.getOutputStream().write(b, 0, len);
}
in.close();结果客户端文件是空的.
高手们帮看看。百分感谢
我现在想实现装String变量的内容下载到客户端。
下面这段代码不能实现啊。各位大侠帮忙看看?谢谢download servlet
------------------------------------------------------
response.setContentType(CONTENT_TYPE);
request.setCharacterEncoding("GBK");
String ContStr = request.getParameter("Desc");
String SaveAsFileName = request.getParameter("filename"); System.out.println("串内容:"+ContStr);
response.reset();
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition","attachment; filename=\"" + SaveAsFileName + "\""); ByteArrayInputStream in = new ByteArrayInputStream(ContStr.getBytes());
byte[] b = new byte[100];
int len = 0; while((len=in.read(b)) >0)
{
response.getOutputStream().write(b, 0, len);
}
in.close();结果客户端文件是空的.
高手们帮看看。百分感谢
File f = new File(souceFile);
InputStream inStream=new FileInputStream(souceFile); response.reset();
response.setContentType("bin");
response.addHeader("Content-Disposition","attachment; filename=\"" + destFile + "\""); byte[] b = new byte[100];
int len;
while((len=inStream.read(b)) >0)
response.getOutputStream().write(b,0,len);
inStream.close();
f.delete();而我只把
InputStream inStream=new FileInputStream(souceFile);
改成
ByteArrayInputStream in = new ByteArrayInputStream(ContStr.getBytes());
{
response.getOutputStream().write(b, 0, len);
}
后是否需要flush?
while((len=in.read(b)) >0)
{
response.getOutputStream().write(b, 0, len);
}
response.getOutputStream().flush();?呵呵,试一下,我不敢肯定
加了
response.getOutputStream().flush();
还是不行。而且还多了一个报错:
java.net.SocketException: Connection reset by peer: socket write error
直接赋值给String ContStr="aaaaaa";
String destFile="bbb.txt";
然后我这里要加一句:response.getOutputStream().close();否则报错。
其他没做什么修改。测试没有问题。
供参考
response.getOutputStream().flush();
就OK了 (原来不行是因为忘记重新编译)
加上
response.getOutputStream().close();
就不报异常了。
感谢楼上2位的帮助