【问题标题】:How can we get the full path of a file in a browser我们如何在浏览器中获取文件的完整路径
【发布时间】:2020-07-21 15:12:37
【问题描述】:

我们有一个 Python 应用程序,它充当 Web 服务器,在用户选择的浏览器中呈现 GUI。服务器与浏览器在同一台 PC 上运行。

用户需要选择一个文件进行处理(在浏览器中),然后将其传递给服务器进行处理。

由于浏览器安全模型,我们无法获得原始文件的完整路径。相反,浏览器会上传文件的副本,而这个路径就是传递给服务器的路径。

文件大约 0.5GB,因此上传时间很长,例如45s,但这对我们来说完全是浪费时间,因为如果浏览器给我们路径,我们可以简单地访问原始文件。

有没有办法获取原始文件的完整路径,避免浪费时间浏览器上传文件?

[如果术语不正确,请原谅我:我是经理,开发人员是原始毕业生,我们没有经验丰富的 Web 开发人员]

【问题讨论】:

  • 不,这是不可能的(没有某种浏览器修改,比如专门的插件)。浏览器不区分与本地服务器和远程服务器的交互。
  • 你不能,这是出于安全目的,你唯一能得到的就是文件名。但是为什么服务器不提供浏览器中的文件浏览器而不是使用客户端内置的文件浏览器呢?

标签: javascript


【解决方案1】:

如果可以绕过浏览器安全性来捕获将代表所有主要浏览器中的安全漏洞的完整文件路径!

这可以做到,但是您需要编写一个自定义文件上传接口才能做到这一点。

如果保证服务器与客户端(浏览器)在同一台机器上运行,则服务器可以通知客户端他们机器上的文件。

交互如下所示:

  1. 用户在浏览器中点击“上传文件”
  2. 浏览器向服务器请求文件信息
  3. 服务器返回一个根目录列表,其中包含 usersProgram FilesWindows 文件夹等项目(假设是 Windows 操作系统)
  4. 浏览器接收此信息并使用 html 组件呈现它;例如:
<div class="file-browser">
  <div class="current-directory">C:</div>
  <div class="children">
    <div class="child directory">
      <div class="full-name">C:/users</div>
    </div>
    <div class="child directory">
      <div class="full-name">C:/Program Files</div>
    </div>
    <div class="child directory">
      <div class="full-name">C:/Windows</div>
    </div>
    <div class="child file">
      <div class="full-name">C:/StopProc.bat</div>
      <div class="filesize">66 bytes</div>
    </div>
  </div>
</div>
  1. 用户点击“/users”目录
  2. 浏览器向服务器请求文件信息
  3. 服务器返回 /users 目录的文件信息(包括 C:/users/user1C:/users/user2 等项目)
  4. 浏览器在 html 中呈现此信息

这个过程继续。如果服务器愿意将绝对文件路径信息返回给浏览器,并且它们在同一台机器上运行,那么没有什么可以阻止这些信息进入浏览器。

【讨论】:

    猜你喜欢
    • 2015-01-21
    • 2019-06-11
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 2020-01-01
    相关资源
    最近更新 更多