【问题标题】:Unzipping a file in Google Storage Bucket解压 Google Storage Bucket 中的文件
【发布时间】:2020-02-29 13:44:47
【问题描述】:

我正在使用数据流模板API 解压缩我在 Google 存储桶中的压缩文件。该 zip 文件又具有多个文件夹和文件。现在数据流 api 解压缩我的 zip 文件,但将输出写入纯文本文件。我想要的只是解压缩我的输入文件并提取其中的所有内容。我该怎么做?

我的 zip 包含以下层次结构

file.zip
|
|_folder1
| |
| |_file1
| |_file2
| |_file3
|_file

提前致谢!

【问题讨论】:

    标签: google-cloud-platform google-api google-cloud-storage


    【解决方案1】:

    管道仅在纯文本文件中打印失败的文件。可以查看详细过程here

    您确定您的文件可读且解压良好吗?

    【讨论】:

    • 嗨@guillaume blaquiere,是的,zip 文件的内容是可读的。 zip 具有我已更新的结构。里面有文件和文件夹。
    【解决方案2】:

    我能够使用控制台中的数据流压缩和解压缩文件。

    在设置上说:批量解压缩云存储文件模板 必需参数。要读取的输入文件模式(例如, gs://bucket-name/uncompressed/*.gz)。

    所以压缩/解压缩工作在文件级别,通过匹配模式。我不知道您是如何在文件夹级别进行压缩或解压缩的。当我尝试为输入参数输入文件夹名称时,我得到:“没有文件匹配规范错误。”

    【讨论】:

    • 嗨@mar​​ian.vladoi,我已经有一个zip文件上传到bucket。我必须将此 zip 的内容解压缩到存储桶中的某个位置。此 zip 不是通过此 API 创建的,而是在本地创建和上传的。我在上面更新的这个 zip 文件的结构我希望通过 API 提取时有类似的层次结构。但我得到一个带有二进制数据的纯文本文件。
    • 压缩算法必须是以下之一:GZIP、BZIP2、DEFLATE
    • 我检查了java代码,我只能看到以下步骤:1)找到所有匹配输入模式的文件2)解压找到的文件并将它们输出到输出目录3)将任何错误写入失败输出文件如果没有递归应用于文件文件夹的文件夹。所以我认为 Api 只解压文件而不是文件夹。
    • 在我尝试解压缩文件夹后,我得到了与您相同的输出文件。那是失败的输出文件,而不是管道的结果
    • 我也在尝试发送具有目录结构的压缩文件,并希望在 Cloud Storage 上扩展相同的目录结构。这会很有帮助,因为我正在尝试在 Google Storage 上创建许多小文件,而 gsutil cp 在这种情况下会很慢。
    猜你喜欢
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多