2

这也可能适用于一般文件系统。

就我而言,我想在 Aws-S3 上编写文件,其中键(文件名)实际上是一个 url 路径。

例如 :

url = "http://example.com/where/are/we/"

那么文件名将是

filename = "where/are/we/"

在 S3 中写入:

s3 = AWS::S3.new
s3.buckets[BUCKET].objects["locations/#{filename}"].write(file_contents)

但正如预期的那样,密钥在里面创建了子文件夹BUCKET/locations/where/are/we/

我最后的手段是filename.gsub!('/', '_')

任何可能的解决方案/解决方法都会很棒!

4

2 回答 2

3

S3 密钥是密钥而不是文件夹或文件名。但是很多工具都像处理文件夹和文件一样处理它们(恕我直言,这很有意义)。由于每个人都提出了文件夹和文件的类比,因此我会将键视为文件夹和文件。这意味着:不要在键中使用斜杠。

另一种方法可能是只添加一个在您的上下文中有意义的文件名。例如,如果您将 web-ish 内容存储在存储桶中的此类密钥下,请将它们存储where/are/we/index.htmlwhere/are/we/.

于 2013-10-22T10:48:38.663 回答
0

我和filename.gsub!('/', '_'). 因为我们不能在文件名中有斜线。

于 2013-12-22T09:44:00.997 回答