以前看到的的例子都是如何装服务器端某文件下载到客户端的。
我现在想实现装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();结果客户端文件是空的.
高手们帮看看。百分感谢

解决方案 »

  1.   

    网上的例子是这样:
        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());
      

  2.   

    while((len=in.read(b)) >0)
        {
          response.getOutputStream().write(b, 0, len);
        }
    后是否需要flush?
        while((len=in.read(b)) >0)
        {
          response.getOutputStream().write(b, 0, len);
        }
        response.getOutputStream().flush();?呵呵,试一下,我不敢肯定
      

  3.   

    回楼上的mofeir(莫飞) (你们要记得给分)
    加了
    response.getOutputStream().flush();
    还是不行。而且还多了一个报错:
    java.net.SocketException: Connection reset by peer: socket write error
      

  4.   

    我用tomcat:
    直接赋值给String ContStr="aaaaaa";
    String destFile="bbb.txt";
    然后我这里要加一句:response.getOutputStream().close();否则报错。
    其他没做什么修改。测试没有问题。
    供参考
      

  5.   

    搞定了。原来加上
    response.getOutputStream().flush();
    就OK了 (原来不行是因为忘记重新编译)
    加上
    response.getOutputStream().close();
    就不报异常了。
    感谢楼上2位的帮助