【问题标题】:Why is the uploaded file Zip file is empty?为什么上传的文件 Zip 文件是空的?
【发布时间】:2012-07-16 11:55:05
【问题描述】:

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

【问题讨论】:

  • 您是否在移动文件夹后列出了文件夹中的文件,以检查它是否存在并且大小与原始文件相同
  • “然后我下载了上传的文件,当我尝试在本地解压缩时,我得到存档格式未知或损坏。” - 所以它正在上传。先删除它,然后重新做,以防权限不允许它被覆盖。
  • 正在上传。但是 zip 中的所有文件都丢失了。
  • 我发现了错误。我错误地在上传的文件上使用了 fopen。当我删除那部分代码并处理整个事情时,我可以找到正确上传的文件。但是我不明白的是,它在中间打开时怎么会丢失内容?

标签: php jquery file-upload zip


【解决方案1】:

Zip 实现因系统而异。在 Windows 上创建的存档在 linux 上可能无法读取。存档可能实际上是有效的。

请提供详细信息:您如何创建存档,如何提取它...

【讨论】:

  • guitarlass 正在同一台电脑上打开 zip(上传到服务器然后再次下载),这意味着某处存在损坏。尝试 FTP 压缩 zip,而不是 jquery 上传,然后解压缩以检查 kgb 的答案是否正确。
  • 是的,我以前做过。我使用 ftp 下载并解压缩代码。它适用于 ftp。
【解决方案2】:

无论如何,您需要在 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>

根据 W3C 关于 enctype 的规范:“此属性指定用于向服务器提交表单的内容类型(当 method 的值为“post”时)。此属性的默认值为“application/ x-www-form-urlencoded"。值 "multipart/form-data" 应与 INPUT 元素 type="file" 结合使用。"

【讨论】:

  • 所有这些代码都已经添加了,我认为如果缺少enctype="multipart/form-data",即使是一个空的zip文件也不会上传。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 2022-01-18
  • 1970-01-01
  • 2012-04-05
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多