HTML表单文件上传无法上传文件。

8

尽管所有后端代码都正确,但文件没有被上传。我用另一个前端样式的代码测试了后端代码,工作正常。

但在我的前端代码中,它不会上传任何文件。我还删除了所有的CSS和脚本以找出问题所在。

这是我的简单前端HTML表单:

<form action="upload_handler.php" method="post">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload" name="submit">
</form>
4个回答

18

您忘记提到 enctype="multipart/form-data"

<form action="upload_handler.php" enctype="multipart/form-data" method="post">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload" name="submit">
</form>

6
问题出在您的<form>标签中的属性上。为了成功地在HTML中上传文件,需要满足以下要求:
  • 确保表单使用method="post"

  • 表单还需要以下属性:enctype="multipart/form-data"。

它指定了在提交表单时使用的内容类型

所以只需在<form>标签中添加enctype="multipart/form-data"即可。

我已经添加了这两个东西,但是对于我来说,.files字段仍然未定义。 - Joseph Marriage

0

你的HTML表单文件上传可能无法正常工作有几个原因。以下是一些最常见的原因:

  • 表单没有使用enctype="multipart/form-data"属性。 该属性告诉浏览器以允许上传文件的方式对表单数据进行编码。
  • 文件输入元素没有name属性。该属性用于在表单数据中标识文件。
  • 您试图上传的文件太大了。
  • 可以上传的最大文件大小通常受服务器配置的限制。
  • 您试图上传的文件不是有效的文件类型。服务器可能仅允许上传某些文件类型。
  • 负责处理文件上传的服务器端代码存在错误。

如果您已经检查了所有这些内容,但文件上传仍然无法正常工作,则可能需要联系您的Web托管提供商寻求帮助。

以下是您可以检查的其他一些事项:

  • 确保文件输入元素的accept属性设置为您想要允许的文件类型。例如,如果只允许JPEG和PNG图像,则将accept属性设置为image/jpegimage/png
  • 确保您要上传的文件与HTML表单位于同一目录中。如果文件位于不同的目录中,则需要在文件输入元素的file属性中指定文件的完整路径。
  • 确保服务器对正在上传文件的目录设置了正确的权限。该目录必须可被Web服务器用户写入。

希望这能帮到您!


0
另一个建议:你的htaccess代码可能会阻止文件上传。以下是一些你可以检查的事项:
- 确保你的htaccess文件中的AllowOverride指令设置为All。这将允许应用所有.htaccess指令。 - 确保你的htaccess文件中没有Require all granted指令。该指令将拒绝所有文件上传。 - 如果你的htaccess文件中有其他限制文件访问的指令,请确保它们不会阻止文件上传。
如果你已经检查了所有这些事项,但文件上传仍然无法正常工作,那么你可能需要联系你的网络托管提供商寻求帮助。
以下是一些额外的解决方法,可以用来排除htaccess文件的问题:
  • 尝试将您的htaccess文件禁用,将其重命名为.htaccess.disabled。这将暂时禁用htaccess文件中的所有指令。如果在禁用htaccess文件后文件上传开始正常工作,则说明问题出在htaccess文件上。
  • 尝试从一个正常工作的网站复制您的htaccess文件。这将给您一个已知良好的htaccess文件,可以作为起点使用。
  • 如果您仍然遇到问题,可能需要联系您的网络托管提供商寻求帮助。他们将能够帮助您排除htaccess文件的问题并修复它。

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