使用Fog时,Google云端存储中的额外对象

时间:2015-01-05 05:41:53

标签: ruby-on-rails ruby fog

我正在关注创建目录然后上传文件的fog.io/storage示例。当我将文件推送到Google云端存储时,一切都很有效,除了总是有一个"二进制/八位字节流"文件名称与我创建的最深文件完全相同。

我的代码与AWS示例非常相似,因为我创建了一个目录,并从该新目录创建了一个文件。正确创建目录结构并正确上载文件,但总是有一个额外的0字节文件。我的代码如下:

job_number = 100

connection = Fog::Storage.new({
  :provider                         => 'Google',
  :google_storage_access_key_id     => YOUR_GCE_ACCESS_KEY_ID,
  :google_storage_secret_access_key => YOUR_GCE_SECRET_ACCESS_KEY
})

directory = connection.directories.create(
  :key    => "test-project/uploads/#{job_number}",
  :public => false
)

file = directory.files.create(
  :key    => 'file.pdf',
  :content_type => 'application/pdf',
  :body   => File.open("/path/to/my/file.pdf"),
  :public => false
)

目录结构很完美(gs:// test-project / uploads / 100文件夹存在),file.pdf文件也存在于该目录中(gs:// test-project / uploads / 100 / file。 PDF)。

问题在于:

之后
directory = connection.directories.create(
  :key    => "test-project/uploads/#{job_number}",
  :public => false
)
运行

命令,gs:// test-project / uploads / 100上有一个文件,gs:// test-project / uploads / 100 /目录。当我浏览代码时,connection.directories.create(...)命令肯定会创建额外的文件,但我无法弄清楚原因。

我还尝试在connection.directories.create(...)命令的键值中添加一个尾部斜杠但实际上会创建一个比这个更糟糕的不同目录结构问题(这不是&t; t坏,只是讨厌)。

有没有人看过这个或知道如何正确地通过Fog创建目录结构?

1 个答案:

答案 0 :(得分:1)

不是直接创建文件目录,只需创建/获取基目录/存储桶,然后使用其余的目录结构保存文件。所以它看起来像这样:

job_number = 100

connection = Fog::Storage.new({
  :provider                         => 'Google',
  :google_storage_access_key_id     => YOUR_GCE_ACCESS_KEY_ID,
  :google_storage_secret_access_key => YOUR_GCE_SECRET_ACCESS_KEY
})

directory = connection.directories.create(
  :key    => "test-project",
  :public => false
)

file = directory.files.create(
  :key    => 'uploads/#{job_number}/file.pdf',
  :content_type => 'application/pdf',
  :body   => File.open("/path/to/my/file.pdf"),
  :public => false
)