我用Servlet做的服务器,用Delphi做的客户端,在Servlet端执行写Excel的操作(用jxl),希望能将Excel文件保存到客户端;
当把Servlet导出的war文件放在我机子上的Tomcat上时,就可以正常导出;但把这个war文件放到服务器上时,不报错,但是没有导出的Excel文件。我在网上查了下,可能是路径的问题,但是服务器端可以直接将文件写到本地吗?或者有没有其他的方法?
请大家指点,谢谢!

解决方案 »

  1.   

    我是在创建Excel时用的客户端传过来的路径,应该是写到客户端。
      

  2.   

    不好意思,还是理解不了,传的是什么路径?磁盘路径?
    写的时候往这个磁盘路径写?结果还是写到服务器的那个路径了吧?我能想到的逻辑,客户端发起一个请求,servlet生成的文件,发送给客户端,客户端接收到这个文件,写到本地。
    这才是一个正常的可控的逻辑啊!
      

  3.   

    谢谢,我开始的想法是直接写到客户端,可后来发现服务器找不到路径,所以来问下这个方法是否可行。对于Delphi与Servlet的通信,我只用了传送字符串,不知道Servlet如何将文件发给客户端,谢谢!
      

  4.   

    我想对于servlet端来说,应该是类似处理文件下载的情况
    我在往上查了查,excel文件的下载设置
    servlet里设置响应的header和contenttype
    //   设置响应头和下载保存的文件名  
      response.setContentType("application/vnd.ms-excel");  
      response.setHeader("Content-disposition",   "attachment;filename=test.xls");   
    我没有测试,但愿对你有所帮助
      

  5.   

    我在Servlet中是这样设置了,但在Delphi客户端没有反映!不知道是不是还有哪个地方有问题!
    总之,谢谢了!
      

  6.   

    服务器端的文件是不可能直接生成到客户端的,只能够先在服务端生成文件,
    然后客户端下载至本地
    思路是这样滴  不懂Delphi  只能说这么多了
      

  7.   


    其实服务器端可以不生成文件,而是直接以流的方式传给客户端,走HTTP协议.那么,如果以write file方式,流会先转成服务器本地文件,如果以response方式,那么这个流就会以客户端的响应方式,如同5楼那个方法,这样,在windows端会以弹出对话框的提示方式来保存为客户端的文件.至于你说的从服务器直接写文件到客户端,从安全性考虑,这也是不允许的.个人意见:
    服务器生成文件,给予客户端消息(例如:文件路径+文件名称),客户端触发FTP取得(我想Delphi写FTP应该不难)
    JAVA写response方式很容易,但DELPHI本人不懂,但我想这个东西思路应该都是相通的.
      

  8.   

    通过Delphi从服务器上下载,没有成功,只有转用JSP做了,已经能够下载了,谢谢大家!