PHP文件上传可以';t以相同的形式发送POST数据


PHP file upload can't send POST data on same form

我有一个基本的用户名&密码表单,它还允许您上传图像。有一个创建按钮,它将用户带到uploader.php,它既上传图像,又输入用户名&密码输入数据库。

在表单标签中:

<form enctype="multipart/form data"method="POST"action="uploader.php?uploader=avatar&username=<?php echo$_POST['username'];?>">

问题:

用户名不会发布,也不会发布任何其他帖子。所有字段都在表单中。我已经检查了PHP文件上传表单是否不能提交POST变量?在php.ini中post_max_size=8M,upload_max_filesize=2M

使用<input type="hidden"/>发布username和其他信息。

<form enctype="multipart/form-data" method="POST" action="uploader.php">
    <input type="hidden" name="uploader" value="avatar"/>
    <input type="hidden" name="username" value="<?php echo $_POST['username']; ?>" />
    ...
</form>

样例.php

<form enctype="multipart/form-data" method="POST" action="uploader.php">
  <br/>Username : <input type="text" name="username"/>
  <br/>Password : <input type="password" name="password"/>
    <input type="hidden" name="uploader" value="avatar"/>
   <br/>File : <input type="file" name="file"/>
   <br/><input type="submit"/>
</form>

上传器.php

<?php
  print_r($_POST)  // debug  $_POST
  print_r($_FILES) // file
  //OR
  echo $_POST["username"];
  $file=$_FILES["file"];
  print_r(file);
?>

听起来你想提交用户名和密码,然后一次提交上传一个文件。

如果这是你想要的,你需要以下东西:

<form enctype="multipart/form-data" method="POST" action="uploader.php">
<input type="text" name="username" value="" />
<input type="password" name="password" value="" />
<input type="file" name="uploaded" />
...
</form> 

用户名和密码将在$_POST[]中可用,文件将出现在$_FILES[]中。

当我试图上传的文件大于PHP接受的最大文件大小时,我遇到了这个问题。查看:

ini_get('post_max_size')

ini_get('upload_max_filesize')

看看你的文件是否太大。我的解决方案是使用空($_POST)来确定文件是否太大(或者发生了其他发布问题)并引发异常。

奇怪的是,我遇到了同样的问题,直到我添加了enctype="multipart/form-data"属性。。之后,所有工作