2012-07-16 487 views
0

我使用jQuery Form Plugin和PHP上传文件。我上传了一个Zip文件到服务器,使用move_uploaded_file()。它返回true,然后我将该文件解压缩到服务器中的另一个文件夹,将现有文件和文件夹复制到该目录。但是,我看不到文件夹中的文件。只有文件夹存在。然后我下载了上传的文件,当我试图在本地解压缩时,我得到了The archive is either in unknown format or damaged。原始的Zip文件打开罚款。我只是不知道档案发生了什么。请帮助我。为什么上传的文件Zip文件是空的?

+0

你有没有在移动它后检查文件夹中的文件,检查它是否与原始版本相同 – Waygood 2012-07-16 11:57:54

+0

”然后我下载了上传的文件,当我尝试在本地解压缩它时t档案格式不明或已损坏。“ - 所以它正在上传。先删除它,然后重新执行它,以防止它被覆盖。 – Waygood 2012-07-16 12:07:21

+0

正在上传。但是zip中的所有文件都丢失了。 – guitarlass 2012-07-16 12:13:13

回答

0

不同系统的Zip实现不同。在Windows上创建的存档可能在Linux上不可读。档案可能实际上是有效的。

请提供细节:您是如何创建的归档,你怎么提取它...

+0

吉他正在同一台电脑上打开zip(上传到服务器,然后再次下载),这意味着某处出现了损坏。尝试FTP的zip,而不是jQuery上传,然后解压缩,以检查kgb的答案是否正确。 – Waygood 2012-07-16 12:04:05

+0

yupp我之前做过。我使用ftp下载并通过代码解压缩。它可以很好地使用ftp。 – guitarlass 2012-07-16 12:11:46

0

通过一切手段,你需要在你的HTML表单指定enctype="multipart/form-data"。其他明智的,你的文件将无法正确上传(或全部):

<form id="myForm" action="upload.php" method="post" enctype="multipart/form-data"> 
    File: <input type="file" name="file" /> 
    <input type="submit" value="Submit" /> 
</form> 

根据有关ENCTYPE W3C规范:“该属性指定用于表单提交给服务器的内容类型(当值方法是“post”),这个属性的默认值是“application/x-www-form-urlencoded”,值“multipart/form-data”应该和INPUT元素结合使用,type =“file”

+0

所有这些代码已经添加了,我不认为即使是一个空的zip文件也会上传,如果'enctype =“multipart/form-data”'丢失。 – guitarlass 2012-07-16 12:15:25