上传前客户端 zip 文件提取的选项

Posted

技术标签:

【中文标题】上传前客户端 zip 文件提取的选项【英文标题】:Options for client side zip file extraction before upload 【发布时间】:2011-09-21 21:19:53 【问题描述】:

我们的问题

我们正在构建一个基于浏览器的应用程序,允许用户将文件上传到服务器进行处理。服务器端使用 Codeigniter v2.0.2 框架用 php 编写。要上传的文件是另一个系统的输出,它们的格式是我们无法控制的。它们可能非常大(数百 MB),但服务器端处理不需要它们的大部分内容。这些文件本身实际上是 zip 格式(尽管带有定制的扩展名),并且包含许多图像文件以及一个相对较小的 XML 文件,而这只是我们在服务器端处理所需要的。显然,当我们需要不到文件质量的 1% 时,发送整个文件会非常浪费。我们也不想要求用户手动从文件中提取 XML。

我的问题

我们有哪些选项可以编写可以从 zip 中提取 XML 文件并将其发送的客户端代码?很高兴考虑在大多数现代浏览器中运行的任何技术。虽然我们是一家 C#/C++ 编码公司,但 Web 技术并不是我们的日常工作,因此我们非常感谢您收到代码示例!

非常感谢。

【问题讨论】:

看看这个答案***.com/questions/2163857/… 有一些选项,但它们都不适用于旧版浏览器(我说的是 IE8 有点旧) ***.com/questions/2095697/… 的另一个问题有希望的答案 【参考方案1】:

您是否正在寻找用于 zip 压缩的库?您可以在客户端使用SLSharpZipLib,在服务器端使用.NET counterpart。

【讨论】:

【参考方案2】:

这应该很容易用一个签名的java小程序来实现,90%的用户都会安装java,如果没有客户端可以安装它。

签名的 Java 小程序将能够访问该文件并提取您需要的文件并将其传输到您的服务器。

这也将非常快,因此即使是大文件也可以正常工作。

【讨论】:

确实这是我们选择的解决方案。非常感谢。【参考方案3】:

我使用了 Phil Sturgeon 的 this lib。我的文件不到 20mb,所以我不知道它将如何与您的项目一起使用。

【讨论】:

谢谢,但这是一个服务器端库,需要已将数据上传到站点。我追求的东西只会上传 zip 存档中的一个文件。

以上是关于上传前客户端 zip 文件提取的选项的主要内容,如果未能解决你的问题,请参考以下文章

在客户端将大文件(> 2GB)压缩成 ZIP

使用 AFNetworking 将 .zip 文件上传到 REST 服务器失败

2022年底C# 解压zip文件遇到的一个Bug

如何提供从客户端上传文件夹的选项并进行相同处理?

上传前获取视频尺寸,客户端

使用带有 Node.js 的 AWS Lambda 函数从 S3 存储桶中提取 zip 文件并上传到另一个存储桶