表单文件字段值未发布到$ _POST

时间:2012-08-12 08:54:04

标签: php forms file-upload

我正在使用表单进行一些测试并遇到障碍,我有一个非常简单的测试脚本可以工作,但问题是表单中的我的FILE字段由于某种原因没有被提交到$ _POST数组,如果我取出encode =“multipart / form-data”它,否则我只是得到其他字段。这是脚本:

<?PHP
print_r($_POST);
echo"<br>";
print_r($_FILES);

$name = $_FILES["img1"]["name"];
$tmp_name = $_FILES["img1"]["tmp_name"];
$uploads_dir = "uploads";
echo "<br>TEMP NAME:</b>";
echo $tmp_name;
move_uploaded_file($tmp_name, "$uploads_dir/$name");
?>

<html>
<body>
<br><br>
-------------------------
<form name="test" id="test" action="index.php" method="post" enctype="multipart/form-data">

<label>Name</label>
<input type="text" name="title" id="title">
<br>
<label>File</label>
<input type="file" name="img1" id="img1" size="40">
<br>
<input type="submit" value="submit">
</form>

输出结果为:

POST ARRAY: Array ( [title] => some title )
FIELS ARRAY: Array ( [img1] => Array ( [name] => chicken.jpg [type] => image/jpeg [tmp_name] => /tmp/phpcrBLw9 [error] => 0 [size] => 30940 ) )
TEMP NAME:/tmp/phpcrBLw9 

正如你所看到的,POST只有标题,而不是文件名,我需要它有两个编程的原因,有没有办法做到这一点,而不必手动欺骗/隐藏字段或编辑值?

2 个答案:

答案 0 :(得分:3)

你将无法在$ _POST中看到$ _FILES。它们是不同的超级全局,如果你vardump($_FILES);你会看到它存储了有关上传文件的所有信息,比如大小,tmp名称等。这就是PHP的构建方式,你唯一可以做的就是它是使用

访问名称
  

$ _ FILES [ 'IMG1'] [ '名称']

答案 1 :(得分:1)

您可以在此处访问上传文件的名称:

$_FILES["img1"]["name"]