【问题标题】:Get browser download path with javascript使用javascript获取浏览器下载路径
【发布时间】:2012-04-08 02:45:15
【问题描述】:

我在网上搜索了很多答案,但一无所获。

有没有办法通过Javascript获取浏览器的下载路径?

我不想自己设置路径,我只想知道我的文件被用户下载后去哪里。

【问题讨论】:

  • 这听起来很邪恶,我怀疑这在跨浏览器意义上是可能的。

标签: javascript browser path download


【解决方案1】:

这是不可能的。

纯浏览器-JavaScript 无法获取有关用户文件系统的信息。默认下载路径也可能包含敏感信息,这是有风险的:

假设有人将他的下载存储在C:\CompanyName\RealName\PhoneNumber\Adress\

【讨论】:

  • C:\Windows\Users\Username\Downloads 已经够糟糕了。
  • 如果我错了,请纠正我:我无法从浏览器以编程方式访问任何文件系统文件夹。任何与文件系统相关的操作(读取或保存文件)只能由用户使用 或拖放界面来完成。对吗?
  • @SteNonesiste 这是正确的。没有用于执行真正的文件系统相关操作的跨浏览器解决方案。
【解决方案2】:

浏览器故意与本地文件系统隔离,以防止脚本攻击。您无法获取此信息。

【讨论】:

    【解决方案3】:

    https://www.npmjs.com/package/downloads-folder

    用法

    const downloadsFolder = require('downloads-folder');
    
    console.log(downloadsFolder());
    

    安装

    $ npm install downloads-folder
    

    【讨论】:

    • 我不明白这个答案。 npm 模块使用execSync,它是 Node 的 C 扩展。不是服务端的吗?
    • 我将它用于 TestCafe,它通常是客户端测试脚本执行。在 Windows Chrome 上运行良好,但我确信当我开始在 Mac 上运行它时,我必须进行调整,也许对其他浏览器也进行一些调整,因为这似乎是大多数特性功能的普遍趋势。 npm 本身只是将它安装在服务器上,因此当您执行代码时,您的机器上将拥有必要的库。
    • @SethEden 我可以确认这也适用于 mac。我的确切用例也是 testcafe :-)
    • 除了添加一个额外的模块之外没有其他方法吗?
    • 我收到此错误:Module not found: Can't resolve 'registry-js' in '.../node_modules/downloads-folder'
    【解决方案4】:

    也许是错误的答案。你可以用一些 IE 版本来做到这一点。如果您将它用于 Intranet Web 开发作为需要文件的产品/工作流的开发,则它是有效的。它不适用于其他浏览器(Schrome、Firefox、Safari、AFAIK)。

    <input
    type="hidden"
    id="steel_that_path"
    name="steel_that_path" />
    
    
    <input type="file"
    id="this one you use to upload file"
    name="this one you use to upload file"                                              
    accept="application/octet-stream"                                                 
    onBlur="document.getElementById('steal_that_path').value=this.value;"/> 
    

    【讨论】:

      猜你喜欢
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 2017-06-30
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多