Molunerfinn / PicGo

:rocket:A simple & beautiful tool for pictures uploading built by vue-cli-electron-builder
https://molunerfinn.com/PicGo/
MIT License
24.2k stars 2.24k forks source link

[Bug]: 能不能在"自定义域名"那里加个是否拼接“存储路径”的选项 #1281

Open fscarmen opened 1 month ago

fscarmen commented 1 month ago

前置阅读 | Pre-reading

PicGo的版本 | PicGo Version

PicGo -2.4.0-beta.8

系统信息 | System Information

Mac

问题重现 | Bug reproduce

上传完,输出的路径是 https://<自定义域名>/<存储路径>/<文件名>

而实际我只需要 https://<自定义域名>/<文件名>

所以希望在这两处其中的任意一处,添加一个是否把 “存储路径” 拼接在 url 里的可选框

现 windows 和 mac 版本都存在这个使用的问题,希望大佬抽时间处理一下

谢谢老大提供这么好用的应用。

image

相关日志 | Logs

No response

Molunerfinn commented 1 month ago

这个如果要做需要对所有的图床都做一下处理才行。这里可能我要想个比较通用的方法。

Molunerfinn commented 1 month ago

另外这个应该算作 feature request 而不是 bug

fscarmen commented 1 month ago

这个如果要做需要对所有的图床都做一下处理才行。这里可能我要想个比较通用的方法。

我觉得加个 是否在url的最后添加路径 的复选框,又或者自定义那里严格执行,不会强制留尾巴,又或者加个占位符都可以。谢谢老大及时回复

igengdu commented 1 month ago
  1. 谢谢开发者大佬分享的优质软件。
  2. 我也希望,Picgo输出自定义连接时,可以提供输出或不输出图片路径的链接选择 例如,图片路径是images,自定义地址是:https://a.b.c ,文件名是1.png,那么,目前生产的链接只能是 https://a.b.c/images/1.png 希望可以提供选项,可以不输出包含路径的自定义链接:https://a.b.c/1.png
d-w-x commented 1 month ago

https://github.com/d-w-x/picgo-plugin-gitlab-files/issues/10 我这边也收到了类似的请求。

@Molunerfinn 我理解这个能力是不是应该提供一个通用的 replace 能力(批量将a路径替换为b路径)或者给插件提供一个copy/export url阶段的hack,允许插件来修改自己插件存储图片的链接,而不是在底层存储的时候就直接存储为自定义域名的url?

我的考量是“自定义域名”相较于插件本身配置的域名而言一般是不稳定的(例如 gitlab、gitee 是稳定的,用户在此基础上自建反代是不稳定的),直接存储翻译后的url可能在反代挂掉的情况下导致图片无法呗访问。

我设想的操作方式:(以 github 为例) 上传阶段:(保持现状) 图片 -> github -> raw.githubusercontent.com/xxx 存储。 获取图片阶段: raw.githubusercontent.com/xxx --plugin/全局定义的replace规则--> https://cdn.jsdelivr.net/gh/xxx

fscarmen commented 1 month ago

最近做了个 github / gitlab 图床集群的方案,就差两位大佬这块的支持了。

image
Molunerfinn commented 1 month ago

picgo 目前存储的数据结构里有 url 和 文件名,每个插件自身可能还有自己的一些额外配置,比如自定义域名,但是有的图床是没有这个配置的,所以它不适合做全局通用配置。 存储是一定要存 url的 这个没得说,因为 picgo 的本质是获取图片 url 的工具,基本功能不受插件影响。但是 picgo 不会去区分什么是原始 url 什么是最终 url。原则上只有最终 url。 插件本身是可以实现 afterUploadPlugins,可以通过修改 output 里的 url 来影响 picgo 落地相册文件的 url 的。

不过 copy 按钮,会跟 remove 按钮一样提供钩子或者其他 api 给到插件,让插件去监听亦或是介入这个动作

d-w-x commented 1 month ago

插件本身是可以实现 afterUploadPlugins,可以通过修改 output 里的 url 来影响 picgo 落地相册文件的 url 的。

实际上在这个场景下,落相册文件url还是原始url比较好,这个是一个稳定的链接,如上所述。 可能还是需要辛苦支持下 copy 按钮的 hack,同时可能需要考虑下这个hack在 PicGo-Core 中,picgo upload /xxx/xx/xx.jpg 返回的结果数据是否也被同时 hack。

d-w-x commented 1 month ago

picgo 目前存储的数据结构里有 url 和 文件名,每个插件自身可能还有自己的一些额外配置,比如自定义域名,但是有的图床是没有这个配置的,所以它不适合做全局通用配置。

这个可能是对“全局通用配置”理解我们不一样。 实际上可以这个配置可以允许用户配置一个列表,第一行是前缀链接,第二行是替换链接,形如:

原始链接 替换链接
raw.githubusercontent.com/【user】/【repo】/refs/heads/master/ cdn.jsdelivr.net/gh/【user】/【repo】/

其中以上可以支持正则表达式。当用户点击 copy 按钮时,依次执行表中的替换,输出最终替换结果即可。

Molunerfinn commented 1 month ago

实际上picgo之前为了支持非图片上传的需求,有新加一个叫做 fileUrl 的属性,如果有这个属性点击相册的 copy 会优先复制,而 imgUrl 则是用来做相册展示的(可以理解为对于非图片类型的,相册里展示的是文件类型图,点击复制能够拿到文件本身地址。)。这个其实也是一个潜在扩展点。

你说的前缀匹配替换,其实在相册里已经有类似的功能,能够批量替换图片 url 。只不过它修改后会影响落地的文件。

不过你说的那个思路我已经明白了,这个确实可以做成一个全局配置。不过现有的图床已经存在的自定义域名是不会有功能修改的。

我会额外添加一个图片地址匹配和替换的能力,如果有需要的用户可以使用这个配置。

d-w-x commented 1 month ago

嗯,辛苦你这边了。

无论是全局配置还是插件提供扩展点我觉得都ok,辛苦开发好后同步下我,我回复下这边给我提pr的老哥~

Molunerfinn commented 1 month ago

好的 应该会是下周,因为目前工作挺忙只能抽空维护