在 Google App Engine (GAE) 中使用 zip_read 解压缩上传的文件

Tom*_*ous 5 php google-app-engine file-upload unzip

据我所知,用户上传的文件必须通过 CloudStorageTools::createUploadUrl() 将文件上传到 PHP GAE 环境,从而在 gs 存储桶中生成一个文件 (gs://[name]/[id])。

文件上传很有用,但解压缩上传的文件会带来一些问题。我尝试了 3 种方法,但似乎没有一种对我有用:

  1. 支持 PHP zip 函数 ( http://www.php.net/manual/en/ref.zip.php ),但在 gs 存储桶路径上使用 zip_open 不起作用(检查 fopen 命令导致工作文件指针:资源 id #120)

  2. ZipArchive ( http://nl1.php.net/manual/en/book.zip.php )。不幸的是,GAE 还不支持 ZipArchive 库(还?)。必须编译。

  3. PclZip ( http://www.phpconcept.net/pclzip ) 给了我一个有效的资源句柄(支持 zlib),但我遇到了这个问题(fseek 经常为 0):https : //code.google.com/p /googleappengine/issues/detail?id=10881

有人知道如何将大型 zip 文件上传到 GAE (PHP)、解压缩并使用它们吗?我几乎要要求用户自己解压缩 zip,分别上传解压缩的文件并绕过整个解压缩过程。

小智 2

我知道已经有一段时间了,但我也尝试了上述方法,但它们不起作用。我本来打算向 GAE 认输,然后发现了TbsZip

有了它,我能够上传 ODT(具有 zip 格式)、提取文件、修改它,然后将其放回到原始 zip 的副本中并将其发送回用户。尚未对其进行广泛测试,但在 Google 修复 GAE 之前,它似乎确实是一个合理的解决方法。

该 API 类似于 ZipArchive。我将其与当前的 GAE SDK (1.9.15) 一起使用。

希望这可以帮助!