使用 AWS S3,我可以将文件 test.png
上传到我喜欢的任何目录,无论它是否存在......因为 S3 会自动生成完整路径和目录。
例如,如果我上传到S3时,使用路径this/is/a/new/home/for/test.png
,S3将创建目录this
、is
、a
、...并将 test.png
上传到正确的文件夹。
我正在迁移到 Azure,并且希望使用他们的文件存储。但是,似乎我必须手动创建每个目录...我显然可以通过检查文件夹是否存在来以编程方式完成它,如果不存在,则创建它...但是哇...为什么我要这么努力?
我确实尝试过:
file_service.create_file_from_path('testshare', 'some/long/path', 'test.png', 'path/to/local/location/of/test.png')
但是,这会提示该目录不存在...并且只有在我手动创建目录或将 some/long/path
替换为 None
时才有效.
是否可以只向 Azure 提供一个路径并让它创建目录?
最佳答案
Azure 文件非常模仿操作系统文件系统,因此为了将文件推送到目录中,该目录必须存在。这意味着如果您需要在嵌套目录结构中创建文件,则该目录结构必须存在。 Azure 文件服务不会为你创建该结构。
在您的场景中,更好的选择是使用 Azure Blob 存储
。它非常模仿您上面提到的 Amazon S3 行为。您可以创建一个 Container(类似于 S3 中的 Bucket),然后上传一个名称类似于 this/is/a/new/home/for/test.png
的文件。
但是请注意,这些文件夹是 Blob 存储(与 S3 相同)中的虚拟文件夹,而不是真实的文件夹。本质上,用于保存 blob(类似于 S3 中的对象)的名称是 this/is/a/new/home/for/test.png
。
关于python-3.x - 如何让 Azure 文件共享自动生成不存在的目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42999238/