作者microloft (微阁)
看板Browsers
标题Re: [-Fx-] 有没有好用的另存下载路径管理
时间Sun Aug 15 19:30:30 2021
※ 引述《gcobc12632 (Ted)》之铭言:
: 在火狐按右键另存後 会自动开启Windows内建的档案管理员
: 然後你就可以选择路径 把该档案下载到你选的路径内
: 但如果档案很多种 需要分门别类的话
: 每次右键就要慢慢点路径 然後档案管理员还要读取该路径内的档案 很拖时间
: 有没有像这种 我可以存取很多路径 例如:
: C:\Download
: D:\Download\图片
: D:\Download\影片
: D:\Download\其他档案
: 然後我按右键另存的时候 可以直接选其中一个路径 就能下载到该路径了
: 不需要再经过缓慢的Windows内建档案管理员
: 有这种类似的套件吗?
请原谅我以回文的方式赚 P 币。
[ 简短的回答 ]
依照你所提的需求,
我会直接说:没有。
这是因为以目前能使用的 API 来说,
在技术上无法达成。
[ 较长的解释 (没兴趣可跳过) ]
基於安全考量,
与档案系统有关的操作一直都非常受限,
就算是 Extension 也没有太多特权。
在一般网页环境中,
JS 原则上只能用 <a download> 这种妖术来储存档案 (注 1);
而在 Extension 中,
也只多了 browser.download.downloads() 的选择 (注 2)。
但不管是哪一种,
储存时都只能「触发开启」档案管理员,
让使用者「手动」选取要存的路径。
至於档案管理员的预设开启路径、显示内容,
都是由浏览器 (或作业系统) 全权控制,
JS 完全没有插手余地,
因此也就无法达到你想要的功能。
(注 1)
Chrome、Edge 与 Opera 多了 File System Access API 的选择,
但存档时的限制跟 <a> 一样。
Firefox 与 Safari 则不支援此 API。
(注 2)
Chrome 的 Extension 多了
1. chrome.fileSystemProvider
2. chrome.fileBrowserHandler
两个选择,
可能有特殊权限 (没仔细研究),
但只能用於 Chrome OS 中。
[ 替代方案 ]
老实说,
有一个更简单的作法可以达到类似效果。
你以 Junction 或 Symbolic Link 的形式,
在单一资料夹下连结到各类别的实体资料夹位置。
例如在预设的储存资料夹 C:\Download 中,
建立下列连结:
图片 --> D:\Dir1\图片
影片 --> D:\Dir2\影片
文件 --> E:\Dir3\文件
...
用起来应该会跟你想要的效果有 87% 像。
--
如果有人发现有上架的 Extension 可以做到原原 Po 要的功能,
希望也能顺便通知我说一声,
我真的会想知道他们是怎麽做到的...
https://i.imgur.com/pWfRply.jpg
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.77.28 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Browsers/M.1629027032.A.B3F.html
1F:→ gcobc12632: 不如说特地回文解释原理还真是帮大忙了 感谢 08/15 20:06
2F:→ gcobc12632: 我可能会照上篇推文的方式 去安装Windows用的管理器吧 08/15 20:08
3F:→ gcobc12632: 其实会PO这篇文的原因 主要是因为之前短暂的跳到Cent 08/15 20:15
4F:→ gcobc12632: 他就有内建此功能 觉得还不错 就想顺便问火狐有没有 08/15 20:16
6F:→ microloft: 难怪那麽多人说跳 Cent,看起来有些功能的确不错 08/15 20:36
7F:→ gcobc12632: 但Cent更新很慢 而且实在是不习惯Chrome系的操作 就又 08/15 20:52
8F:→ gcobc12632: 跳回火狐了 08/15 20:52
9F:→ stucode: 如果透过 browser.downloads.download() 其实是可以不用 08/15 21:32
10F:→ stucode: 触发档案管理员的,唯一的限制是只能在使用者指定的下载 08/15 21:32
11F:→ stucode: 资料夹下(但可以是子资料夹),搭配这篇说的 08/15 21:32
12F:→ stucode: symbolic link 应该是可以做到原原 PO 想做的事。 08/15 21:32
13F:推 brli7848: 用native client搭mimetype可能吗? 08/15 21:51
14F:→ microloft: 嗯那部分我写错 (就不修了)。如果使用者配合建 Link, 08/15 22:22
15F:→ microloft: 加上 download() 可以算是符合需求 08/15 22:22
16F:→ microloft: NC 应该也做得到,虽然我自己是没把它归在原原 PO 说的 08/15 22:24
17F:→ microloft: 套件里 08/15 22:25
18F:→ sam613: 上面看来单纯是记住以前存过得路径,不是去调用filesystem 08/15 23:02
19F:推 BDrip: cent自从不能用Google帐号 应该就快死了..? 08/15 23:36
20F:推 sdbb: 感谢详细解说,帮cent QQ 08/16 00:21
21F:推 rockmanx52: 要说也是「曾经有」 但因为安全性被拿掉了... 08/16 08:45
23F:→ musou: 像这样的符合吗? 08/16 09:39
24F:→ gcobc12632: 楼上这个好像可行 我再试试看 08/16 11:40
25F:→ gcobc12632: DownThemAll只能选择下载路径的子资料夹 不过搭配上面 08/16 12:48
26F:→ gcobc12632: symbolic link 就可以达到类似的效果 虽然不是套件 但 08/16 12:49
27F:→ gcobc12632: 如果以套件无法实现的话 这也算是个次要解 感谢 08/16 12:49
28F:推 BDrip: 想到..C:\fakepath\ 08/16 23:07