使用javascript获取浏览器下载路径

IT技术 javascript browser path download
2021-03-02 02:48:01

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

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

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

4个回答

这是不可能的。

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

想象一下,一个人将他的下载存储在C:\CompanyName\RealName\PhoneNumber\Adress\.

C:\Windows\Users\Username\Downloads 就够糟糕了。
2021-05-07 02:48:01
如果我错了,请纠正我:我无法从浏览器以编程方式访问任何文件系统文件夹。任何与文件系统相关的操作(读取或保存文件)只能由用户使用 <input> 或拖放界面来完成。那就对了?
2021-05-08 02:48:01
@SteNonesiste 那是正确的。没有用于执行真正的文件系统相关操作的跨浏览器解决方案。
2021-05-15 02:48:01

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

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

用法

const downloadsFolder = require('downloads-folder');

console.log(downloadsFolder());

安装

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

也许是错误的答案。您可以使用某些 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;"/>