【问题标题】:Java server program - write files to a specific folder on client sideJava 服务器程序 - 将文件写入客户端的特定文件夹
【发布时间】:2015-04-13 19:25:25
【问题描述】:

我正在编写一个 Java 服务器程序。目前我正在使用DataOutputStream 将文件输出到请求的客户端或浏览器。我希望将文件发送到客户端的特定目录,而不仅仅是发送到浏览器(我不想编写客户端程序来处理此问题)。如何让服务器程序将文件写入客户端的特定目录?

提前致谢

【问题讨论】:

  • 你在谷歌上找不到这个吗?
  • 可能与以下内容重复:stackoverflow.com/questions/21376738/…
  • 我一直在寻找一种方法让它在客户端下载文件 3 天..但无济于事..或者我的谷歌搜索技能已经死了 XD
  • 谢天谢地,你不能那样做。

标签: java sockets


【解决方案1】:

服务器对客户端一无所知,允许服务器在客户端目录上写入文件或任何内容也不是一个好主意,因为这是一个 Http 安全问题,它不允许服务器编写病毒、更改属性等在访问其网页的用户计算机上。

所以,您可以做的是,客户端可以向服务器发送请求,服务器将在客户端(例如浏览器而不是目录)上写入文件,并发送回一些 mime 类型。现在,浏览器可以处理并从浏览器内向客户端显示的 mime 类型很少。然后客户可以根据自己的选择将其下载或丢弃到他/她机器上的任何目录中。

这里有一些你可以在服务器端编写的代码来实现我上面所说的:

        OutputStream out = response.getOutputStream();
        File file = new File(path_to_a_file);
        response.setContentType(file_content_type);
        response.setHeader("Content-disposition","attachment; filename="+FILE_NAME);
        FileInputStream inputStream = new FileInputStream(FILE);
        //Read bytes and write until finished

【讨论】:

  • 我在想同样的台词。但不知道内容处置标头。您先生有我最深切的感谢:D.. 非常感谢! (顺便说一句,它工作得很好:))
  • 很高兴,我可以帮忙:)
  • 有没有办法下载文件并仍然在浏览器中查看?
  • 您的浏览器需要有该扩展程序可供查看。例如,当您打开 pdf 时,它们会在浏览器中打开(但最终它们会在客户端下载但只是在浏览器中查看)
  • 啊,我明白了。知道了。我一直认为服务器应该做所有的事情。感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 2013-05-20
  • 2014-10-06
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 2017-10-26
  • 1970-01-01
  • 2015-05-14
相关资源
最近更新 更多