【问题标题】:Need to get a path location via a web page需要通过网页获取路径位置
【发布时间】:2023-04-01 19:49:02
【问题描述】:

在 firefox 2 中,我能够使用 Browse 获取路径 - 我使用项目中的路径然后将文件写入该位置。那么现在浏览没有获取路径,有没有人知道用户进入目录并通过网页返回路径的方法,以便我可以将其传递给服务器进行处理?

  • execCommand 在 Firefox 中不起作用,并且具有有限的保存类型功能,并且手动输入不是一个可用的选项。谢谢。

【问题讨论】:

  • 你能说得更具体点吗?您是否要求用户从他们计算机上的目录中选择一个文件,以便他们可以将其上传到服务器?
  • 用户使用浏览器选择文件。然后我创建一个新文件,将其添加到该目录并基于路径(我现在没有),将整个目录移动到另一个位置以供某个自动化系统处理(摄取)。

标签: java javascript html jsp


【解决方案1】:

现在,查看完整客户端文件路径的能力被认为是一种安全风险,并且所有现代浏览器都阻止您查看它(通过 Javascript 和通过表单 POST 发送回服务器的信息)。

【讨论】:

    【解决方案2】:

    这在 HTML/JavaScript 中是不可能的。在 HTML 中,您最多可以使用 <input type="file"> 选择文件,但不能选择文件夹左右。在 JS 中,您无法在本地磁盘文件系统上做任何事情,更不用说在 DOM 树中使用 <input type="file"> 元素了。您被安全限制所禁止(作为最终用户,您当然不喜欢网站能够在本地磁盘文件系统上不经意间做事)。

    您只能使用直接在客户端计算机上运行的小型应用程序来做到这一点。例如(签名!)applet,它基本上只是由在客户端机器上运行的网页提供的一段 Java 代码。您可以使用java.net.URL 和consorts 在applet 和servlet 之间进行通信。然后,在小程序中使用Swing's JFileChooser 进行文件夹或文件选择对话框。

    更新:顺便说一下,MSIE 和其他一些古老的浏览器会将完整的客户端磁盘文件系统路径沿<input type="file"> 发送到服务器端。这在技术上是错误的(应该只发送文件名+扩展名)并且完全是多余的。这些信息在服务器端毫无价值,因为它无法使用普通的java.io.File 东西访问文件(除非服务器和客户端都在物理上运行在相同机器上,这当然不会发生在现实世界中)。获取上传文件的常规方法是解析 multipart/form-data 请求正文(通常使用Apache Commons FileUpload 或Servlet 3.0 提供的HttpServletRequest#getParts())。

    【讨论】:

    • 感谢您的帮助和建议!
    • 我认为 IE8 可能会“改变”路径,但我不确定;它肯定在客户端中执行(即,当 Javascript 查看文件输入的“值”时)。当然,它的做法很有趣。
    • @Pointy:IE8 也属于“MSIE”类别。 Commons IO 万岁:commons.apache.org/io/api-1.4/org/apache/commons/io/…
    • 好吧,我现在通过 Stripes 上传所有文件,它非常干净地包装了 CommonsIO。基本上我根本不用去弄。
    • @Pointy:Stripes 是另一个不错的轻量级 MVC 框架,它可以从你手中接过所有讨厌的工作;)赞!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多