halo-dev / halo

强大易用的开源建站工具。
https://www.halo.run
GNU General Public License v3.0
34.21k stars 9.73k forks source link

图片上传问题 #2945

Closed betwowt closed 1 year ago

betwowt commented 1 year ago

是什么版本出现了此问题?

v2.0.1

使用的什么数据库?

PostgreSQL

使用的哪种方式部署?

Docker

在线站点地址

No response

发生了什么?

使用阿里云oss插件,通过粘贴板先后粘贴三张图片上传,实际结果只有一张图片被上传了,可能原因是三张图片默认粘贴到系统都叫image.png

image image image

相关日志输出

No response

附加信息

No response

ruibaby commented 1 year ago

没能复现,我这边甚至无法粘贴。你使用的操作系统是?

/triage needs-information

betwowt commented 1 year ago

macos monterey m1 芯片

JohnNiang commented 1 year ago

本地上传也有类似的问题:

image

上传的表单详情如下:

-----------------------------330239117212975919733627836481
Content-Disposition: form-data; name="policyName"

default-policy
-----------------------------330239117212975919733627836481
Content-Disposition: form-data; name="groupName"

-----------------------------330239117212975919733627836481
Content-Disposition: form-data; name="file"; filename="image.png"
Content-Type: image/png
longjuan commented 1 year ago

可能原因是三张图片默认粘贴到系统都叫image.png

本地存储的已经在https://github.com/halo-dev/halo/pull/3042 中修复了 https://github.com/halo-sigs/plugin-aliosshttps://github.com/halo-sigs/plugin-s3 都没有对同名文件进行处理,导致同名文件只保留第一张或最后一张

这个问题可以通过先headobject查看是否存在同名文件,若同名可与本地存储一样报同名文件已存在错误 另外需不需要增加文件重命名功能,类似: image @JohnNiang @ruibaby

JohnNiang commented 1 year ago

Hi @longjuan ,

IMO,建议暂时和本地上传的逻辑保持一致,通过 S3 上传的图片判断一下 object name 是否重复,如果重复则友好提示用户即可。

longjuan commented 1 year ago

IMO,建议暂时和本地上传的逻辑保持一致,通过 S3 上传的图片判断一下 object name 是否重复,如果重复则友好提示用户即可。

好的 /assign

JohnNiang commented 1 year ago

Hi @longjuan ,这个问题还需要在 console 端的上传组件还需要优化一下,对于直接粘贴的图片,需要用 $UUID.png 替换 image.png

JohnNiang commented 1 year ago

/kind bug /area console /area plugin /remove-triage needs-information

longjuan commented 1 year ago

Hi @longjuan ,这个问题还需要在 console 端的上传组件还需要优化一下,对于直接粘贴的图片,需要用 $UUID.png 替换 image.png

好的,我研究一下

longjuan commented 1 year ago

Hi @longjuan ,这个问题还需要在 console 端的上传组件还需要优化一下,对于直接粘贴的图片,需要用 $UUID.png 替换 image.png

我看了一下,被命名为image.png似乎是浏览器行为。 在截图后或者其他地方复制一张图片(非本地文件),粘贴到uppy,捕获paste事件发现他name就是image.png image

而在Firefox中会被命名为图片.png image

在复制本地文件然后粘贴时,name就是本地文件名 image

我想不到有什么好的办法处理不同浏览器的行为,大佬来看看吧 @ruibaby

不知道Safari又会命名成什么

ruibaby commented 1 year ago

我想不到有什么好的办法处理不同浏览器的行为,大佬来看看吧 @ruibaby

OK,我会抽时间研究一下。

/assign

JohnNiang commented 1 year ago

可能还是得在后端兼容同名的附件上传。无论是本地上传还是 OSS 上传。

longjuan commented 1 year ago

可能还是得在后端兼容同名的附件上传。无论是本地上传还是 OSS 上传。

什么策略,全部都要重命名还是重复了才重命名,是拼接时间戳吗?

lixuejun725 commented 1 year ago

项目同样遇到这样的问题,这边觉得可以加上时间戳,毕竟是复制上来的附件一般只在本篇文章使用。复用率很低

ruibaby commented 1 year ago

已经在 https://github.com/halo-dev/halo/pull/3305 中支持自动重命名。

/close

f2c-ci-robot[bot] commented 1 year ago

@ruibaby: Closing this issue.

In response to [this](https://github.com/halo-dev/halo/issues/2945#issuecomment-1434289099): >已经在 https://github.com/halo-dev/halo/pull/3305 中支持自动重命名。 > >/close Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md). If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
huanglian666 commented 6 months ago

可以麻烦问一下,本地上传方式,上传的图片去哪里呢?