未找到中央目录结尾签名

End-of-central-directory signature not found

我使用 linux zip 命令创建了 zip 文件并将其上传到我的 google 驱动器中。当我尝试使用 curl 和解压缩命令(使用 bash 文件)下载和解压缩压缩文件时,出现以下错误。

Archive:  pretrained_models.zip
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of pretrained_models.zip or
        pretrained_models.zip.zip, and cannot find pretrained_models.zip.ZIP, period.

任何人都可以提出任何解决方法来解决此问题吗?

如果有人想重现错误,我正在共享 .sh 文件。

#!/bin/bash
pretrained='https://drive.google.com/uc?export=download&id=0B8ZGlkqDw7hFSm1MQ2FDVTZCTjA' 
# download pretrained models.
curl -o pretrained_models.zip $pretrained
unzip pretrained_models.zip
rm pretrained_models.zip

文件已公开共享。对于健全性检查,您可以从 here.

下载

N.B。我在 SO 的其他社区看到过相关帖子,其中一些建议使用不同的文件扩展名,但我想坚持使用 zip 文件。

下载Google驱动器上的共享文件时,需要根据文件大小更改下载方式。发现更改方法时文件大小的边界约为40MB.

修改后的脚本:

1。文件大小 < 40MB

#!/bin/bash
filename="pretrained_models.zip"
fileid="0B8ZGlkqDw7hFSm1MQ2FDVTZCTjA"
curl -L -o ${filename} "https://drive.google.com/uc?export=download&id=${fileid}"

2。文件大小 > 40MB

当它尝试下载超过 40MB 的文件时,Google 说从以下 URL 下载。

<a id="uc-download-link" class="goog-inline-block jfk-button jfk-button-action" href="/uc?export=download&amp;confirm=####&amp;id=### file ID ###">download</a>

包含查询 confirm=#### 对于下载大文件很重要。为了从 HTML 检索查询,它使用 pup.

#!/bin/bash
filename="pretrained_models.zip"
fileid="0B8ZGlkqDw7hFSm1MQ2FDVTZCTjA"
query=`curl -c ./cookie.txt -s -L "https://drive.google.com/uc?export=download&id=${fileid}" | pup 'a#uc-download-link attr{href}' | sed -e 's/amp;//g'`
curl -b ./cookie.txt -L -o ${filename} "https://drive.google.com${query}"