Open akang943578 opened 3 weeks ago
Thanks for opening your first issue here! Be sure to follow the issue template!
已知bug,近期比较忙,过段时间再修
感谢支持,我利用闲暇时间经过测试,已经定位修复了问题,为此提交了一个PR:https://github.com/alist-org/alist/pull/6660
希望大佬可以review下,如果可以的话,还请帮忙merge进去,感激不尽!
我测试了一下,貌似本地路径还是无法上传多级的文件欸,你测试过吗
我测试了一下,貌似本地路径还是无法上传多级的文件欸,你测试过吗
抱歉大佬,我只在网页端测试了,windows端我一会测试一下,应该是路径判断有问题,我直接判断的是否含有/
我测试了一下,貌似本地路径还是无法上传多级的文件欸,你测试过吗
抱歉大佬,我只在网页端测试了,windows端我一会测试一下,应该是路径判断有问题,我直接判断的是否含有/
不用抱歉,大家平等交流就好😊我也不是什么特别厉害的大佬,这个问题就是因为我也觉得有点棘手,所以一直没时间弄哈哈哈
我测试了一下,貌似本地路径还是无法上传多级的文件欸,你测试过吗
抱歉大佬,我只在网页端测试了,windows端我一会测试一下,应该是路径判断有问题,我直接判断的是否含有/
不用抱歉,大家平等交流就好😊我也不是什么特别厉害的大佬,这个问题就是因为我也觉得有点棘手,所以一直没时间弄哈哈哈
我们可能说的不是一个问题,我解决的问题是:
alist实现的S3对象存储协议不能够支持:上传文件时,objectName存在多级路径
比如有一个bucket: bucketName1,指向了阿里云盘的目录/root/path/storage。此时如果通过S3协议上传一个文件:
PUT https://s3.example.com/bucketName1/aaa/bbb.txt
alist会直接去找上一级目录:/root/path/storage/aaa,这个目录不存在,则会直接报错。
我的修复逻辑是:在S3协议的实现中,如果检测到了目录不存在,且objectName含有/,说明是个多级的objectName,则创建这个多级目录。
我在网页端和windows客户端都进行了测试,没有问题。
你的截图是怎样的操作流程,可以描述下吗,可能是另一个问题。
我测试了一下,貌似本地路径还是无法上传多级的文件欸,你测试过吗
抱歉大佬,我只在网页端测试了,windows端我一会测试一下,应该是路径判断有问题,我直接判断的是否含有/
不用抱歉,大家平等交流就好😊我也不是什么特别厉害的大佬,这个问题就是因为我也觉得有点棘手,所以一直没时间弄哈哈哈
我们可能说的不是一个问题,我解决的问题是:
alist实现的S3对象存储协议不能够支持:上传文件时,objectName存在多级路径
比如有一个bucket: bucketName1,指向了阿里云盘的目录/root/path/storage。此时如果通过S3协议上传一个文件:
PUT https://s3.example.com/bucketName1/aaa/bbb.txt
alist会直接去找上一级目录:/root/path/storage/aaa,这个目录不存在,则会直接报错。我的修复逻辑是:在S3协议的实现中,如果检测到了目录不存在,且objectName含有/,说明是个多级的objectName,则创建这个多级目录。
我在网页端和windows客户端都进行了测试,没有问题。
你的截图是怎样的操作流程,可以描述下吗,可能是另一个问题。
就是上传一整个文件夹,或者创建文件夹的操作。
我测试了一下,貌似本地路径还是无法上传多级的文件欸,你测试过吗
抱歉大佬,我只在网页端测试了,windows端我一会测试一下,应该是路径判断有问题,我直接判断的是否含有/
不用抱歉,大家平等交流就好😊我也不是什么特别厉害的大佬,这个问题就是因为我也觉得有点棘手,所以一直没时间弄哈哈哈
我们可能说的不是一个问题,我解决的问题是:
alist实现的S3对象存储协议不能够支持:上传文件时,objectName存在多级路径
比如有一个bucket: bucketName1,指向了阿里云盘的目录/root/path/storage。此时如果通过S3协议上传一个文件:
PUT https://s3.example.com/bucketName1/aaa/bbb.txt
alist会直接去找上一级目录:/root/path/storage/aaa,这个目录不存在,则会直接报错。我的修复逻辑是:在S3协议的实现中,如果检测到了目录不存在,且objectName含有/,说明是个多级的objectName,则创建这个多级目录。 我在网页端和windows客户端都进行了测试,没有问题。 你的截图是怎样的操作流程,可以描述下吗,可能是另一个问题。
就是上传一整个文件夹,或者创建文件夹的操作。
我懂了,是一样的问题,我应该将我的修复逻辑下沉一级,这样就能够支持了。目前我怕影响其他功能,只是在S3协议这一级做了修复。
我测试了一下,貌似本地路径还是无法上传多级的文件欸,你测试过吗
抱歉大佬,我只在网页端测试了,windows端我一会测试一下,应该是路径判断有问题,我直接判断的是否含有/
不用抱歉,大家平等交流就好😊我也不是什么特别厉害的大佬,这个问题就是因为我也觉得有点棘手,所以一直没时间弄哈哈哈
我们可能说的不是一个问题,我解决的问题是:
alist实现的S3对象存储协议不能够支持:上传文件时,objectName存在多级路径
比如有一个bucket: bucketName1,指向了阿里云盘的目录/root/path/storage。此时如果通过S3协议上传一个文件:
PUT https://s3.example.com/bucketName1/aaa/bbb.txt
alist会直接去找上一级目录:/root/path/storage/aaa,这个目录不存在,则会直接报错。我的修复逻辑是:在S3协议的实现中,如果检测到了目录不存在,且objectName含有/,说明是个多级的objectName,则创建这个多级目录。 我在网页端和windows客户端都进行了测试,没有问题。 你的截图是怎样的操作流程,可以描述下吗,可能是另一个问题。
就是上传一整个文件夹,或者创建文件夹的操作。
我懂了,是一样的问题,我应该将我的修复逻辑下沉一级,这样就能够支持了。目前我怕影响其他功能,只是在S3协议这一级做了修复。
我更新了PR,将修复逻辑下沉到了op/fs.go里边,已经测试通过了。不过这样每次在get的时候都会尝试makeDir,会带来多余的IO,以我对代码的理解只能写成这样了。
我测试了一下,貌似本地路径还是无法上传多级的文件欸,你测试过吗
抱歉大佬,我只在网页端测试了,windows端我一会测试一下,应该是路径判断有问题,我直接判断的是否含有/
不用抱歉,大家平等交流就好😊我也不是什么特别厉害的大佬,这个问题就是因为我也觉得有点棘手,所以一直没时间弄哈哈哈
我们可能说的不是一个问题,我解决的问题是:
alist实现的S3对象存储协议不能够支持:上传文件时,objectName存在多级路径
比如有一个bucket: bucketName1,指向了阿里云盘的目录/root/path/storage。此时如果通过S3协议上传一个文件:
PUT https://s3.example.com/bucketName1/aaa/bbb.txt
alist会直接去找上一级目录:/root/path/storage/aaa,这个目录不存在,则会直接报错。我的修复逻辑是:在S3协议的实现中,如果检测到了目录不存在,且objectName含有/,说明是个多级的objectName,则创建这个多级目录。 我在网页端和windows客户端都进行了测试,没有问题。 你的截图是怎样的操作流程,可以描述下吗,可能是另一个问题。
就是上传一整个文件夹,或者创建文件夹的操作。
我懂了,是一样的问题,我应该将我的修复逻辑下沉一级,这样就能够支持了。目前我怕影响其他功能,只是在S3协议这一级做了修复。
我更新了PR,将修复逻辑下沉到了op/fs.go里边,已经测试通过了。不过这样每次在get的时候都会尝试makeDir,会带来多余的IO,以我对代码的理解只能写成这样了。
这个每次在get的时候尝试makeDir肯定是不可行的😊所以说这个问题比较棘手,得想办法解决
嗯,看样子需要找到所有的上层入口,在上层按需makeDir,才是比较好的方式。
你先把pr设成draft吧,重新想想办法吧,等我有空我也试一试
Please make sure of the following things
[X] I have read the documentation. 我已经阅读了文档。
[X] I'm sure there are no duplicate issues or discussions. 我确定没有重复的issue或讨论。
[X] I'm sure it's due to
AList
and not something else(such as Network ,Dependencies
orOperational
). 我确定是AList
的问题,而不是其他原因(例如网络,依赖
或操作
)。[X] I'm sure this issue is not fixed in the latest version. 我确定这个问题在最新版本中没有被修复。
AList Version / AList 版本
v3.35.0
Driver used / 使用的存储驱动
Aliyun Open
Describe the bug / 问题描述
我根据文档进行对象存储的配置,挂载了阿里云盘已经存在的目录作为存储桶,给seafile配置存储桶作为存储后端。
配置完成后,在seafile创建资料库报错:
我发现这个请求URL中,seafile-commit-objects在阿里云盘已经存在,9d8233b0-d9e9-4c5f-a5de-0a9ac8f7899d/6dd1cd17494cd27d7d9b21ca07c562a686403acf这个是要创建的文件路径,我发现这是个二级路径,说明需要创建目录9d8233b0-d9e9-4c5f-a5de-0a9ac8f7899d。 但是看文档,应该是不支持目录的创建:
经过我自己用python脚本测试,发现不需要创建目录的时候可以成功,一旦需要创建目录,就会失败。可否支持目录的创建和删除?
Reproduction / 复现链接
https://alist.nn.ci/zh/guide/advanced/s3.html
Config / 配置
Logs / 日志