使用 Fog 时 Google 云存储中的额外对象
Extra object in Google Cloud Storage when using Fog
我正在按照 fog.io/storage 创建目录然后上传文件的示例进行操作。当我将我的文件推送到 Google 云存储时,一切都很好,除了总是有一个 "binary/octet-stream" 文件与我创建的最深的文件完全一样。
我的代码与 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(...) 命令的键值中添加尾部斜杠,但这实际上会产生一个不同的目录结构问题,比这更糟糕(这不是不好,很烦人)。
有没有人看过这个或者知道如何通过 Fog 正确创建目录结构?
不是直接创建文件的目录,而是 create/get 基础 directory/bucket,然后使用其余目录结构保存文件。所以它看起来像这样:
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
)
我正在按照 fog.io/storage 创建目录然后上传文件的示例进行操作。当我将我的文件推送到 Google 云存储时,一切都很好,除了总是有一个 "binary/octet-stream" 文件与我创建的最深的文件完全一样。
我的代码与 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(...) 命令的键值中添加尾部斜杠,但这实际上会产生一个不同的目录结构问题,比这更糟糕(这不是不好,很烦人)。
有没有人看过这个或者知道如何通过 Fog 正确创建目录结构?
不是直接创建文件的目录,而是 create/get 基础 directory/bucket,然后使用其余目录结构保存文件。所以它看起来像这样:
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
)