是否可以仅使用HTML和JavaScript将zip文件上传并提取到指定位置?

3
我有一个网页,要求用户在其计算机上选择并上传zip文件。也要求用户提供服务器上的目标位置。我希望它能够这样工作:当他们告诉我文件在他们的电脑上的位置以及在我的服务器上应该放在哪里,然后单击“发送”按钮,文件将被发送到我的服务器,放置在指定的目录中,并解压缩。
我想通过HTML和JavaScript来实现这一功能。是否可能?如果可以,我该如何去做?

如果您想将结果存储在服务器端的文件夹中,则无法使用纯JavaScript实现。 - Pekka
你不能只用JS上传文件,还需要一些服务器端的编程,比如PHP..! - Sudhir Bastakoti
1
你不能这样做 - 如果你想知道为什么,我建议你考虑一下如果你能够这样做,恶意软件作者会怎么做。 - Brighid McDonnell
有一些 JavaScript 解压工具,但你需要进行一些服务器交互才能将文件存储到服务器上。 - Nathan Manousos
2个回答

3

您需要在服务器端执行此操作,因为客户端的浏览器不能直接写入服务器文件系统,这是一个巨大的安全风险。

除此之外,即使使用HTML5和其File API也无法提取ZIP文件。您需要使用PHP或您正在使用的其他语言在服务器上执行此操作。

如果您只想在客户端本地执行操作,可以考虑使用Flash/Java/浏览器扩展,但出于兼容性和性能原因,我不建议这样做。您最好向服务器发送处理请求并返回操作结果。由于您已经在提供HTML页面,因此可以使用相同的服务器来处理ZIP文件。

另一方面,如果您想将ZIP文件写入服务器,则必须像我在第一段中所述的那样在服务器端执行。


1
我可以在客户端上全部完成吗?不需要与服务器交互吗? - Dan
@dibya 你的意思是,目标文件夹也在用户的驱动器上吗?如果是这样,在网页上解压文件有什么意义呢?使用普通的本地解压应用程序不是更好吗? - Pekka
1
@JamWaffles - 我只需要展示一个在我的本地机器上运行的模型。之后我需要将其扩展到服务器端。 - Dan
@Pekka - 目前必须在本地系统上在网页上运行此程序。现在只是一个模拟。以后我将不得不扩展到服务器端。 - Dan
1
如果你最终要将它扩展为服务器端进程,为什么不编写模型以实现这一点呢?你应该查看HTML 5文件API。 - Bojangles

0

您可以使用rawdeflate在JavaScript中解压缩/压缩内容。

正如其他帖子所建议的那样,您不能使用普通浏览器直接保存到本地文件系统。您可以将结果回显到服务器上(在这种情况下,它可能会解压缩),或者如果已安装Flash,则可以使用Downloadify

大多数现代浏览器支持FileAPI从本地文件系统加载,当然,Chrome、Firefox和Opera都支持。我还没有测试过IE 9。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接