我正在尝试整理一个HTML POST表格,其中包含两个字段 - 文件上传和文本字段。由于表单有一个类型的multipart / form-data用于文件上传,我无法通过普通的PHP $ _POST变量获取文本字段。那么如何使用PHP获取表单中的文本字段?
根据要求,这里有一些代码,基本上直接取自Andrew:
<html>
<body>
<form action="test2.php" method="post" enctype="multipart/form-data">
Name: <input type="text" name="imageName" />
Image: <input type="file" name="image" />
<input type="submit" value="submit" />
</form>
</body>
</html>
<?php
echo $_POST['imageName'];
echo "<pre>";
echo var_dump($_FILES['image']);
echo "</pre>";
?>
这是整个测试文件。如果我删除了enctype,我可以获得POST-ed数据,但当然不是文件。使用enctype作为multipart / form-data,我可以获取文件,但没有来自POST-ed数据。
这是带有enctype的输出:
array(5) {
["name"]=>
string(34) "testing.png"
["type"]=>
string(0) ""
["tmp_name"]=>
string(0) ""
["error"]=>
int(1)
["size"]=>
int(0)
}
不
testing
NULL
两次输入相同。
答案 0 :(得分:26)
答案 1 :(得分:8)
检查你的帖子限制。我正在疯狂地试图找出造成这种情况的原因。快速检查Apache错误日志显示帖子内容长度超出限制。提高限额后,可以获得发布数据。
答案 2 :(得分:5)
$_POST
应该适用于文本字段。您需要使用$_FILES
作为实际文件。给出以下HTML:
<html>
<body>
<form action="self.php" method="post" enctype="multipart/form-data">
Name: <input type="text" name="imageName" />
Image: <input type="file" name="image" />
<input type="submit" value="Submit" />
</form>
</body>
</html>
您可以通过以下方式访问字段:
<?php
echo $_POST['imageName'];
echo "<pre>";
echo var_dump($_FILES['image']);
echo "</pre>";
?>
答案 3 :(得分:1)
你的代码没有错;可能是服务器配置的问题。
<form action="" method="post" enctype="multipart/form-data">
Name: <input type="text" name="imageName">
Image: <input type="file" name="image">
<input type="submit" value="submit">
</form>
<?php var_dump($_POST, $_FILES); ?>
脚本:http://sandbox.phpieceofcake.com/upload/1246558881125336.php
资料来源:http://sandbox.phpieceofcake.com/upload/1246558881125336.phps
答案 4 :(得分:1)
我遇到了与开头所示相同的问题。通过加载小于1MB的文件来尝试它,如果您已经能够上传文件,那么您的问题是upload_max_filesize和post_max_size值会增加这些值并重试。这是解决我问题的方法。
答案 5 :(得分:0)
[2010-02-13 10:57 UTC] sudeshkmr at yahoo dot com
我遇到了同样的问题而没有任何效果。我在Windows Vista上测试了Apache 2.2,PHP 5.3。我还使用Apache 2.2和PHP 5.3在Ubuntu(Karmic)上进行了测试。我还测试了nGinX 0.8和PHP 5.3。
然后我找到了解决方法。 action =“”参数不应该是您具有文件上载表单的脚本页面本身。例如,您有一个带有上传表单的页面index.php。
action =“upload.php”&lt; --------此页面必须与文件上传表单页面不同,它适用于PHP的所有配置!
不要用于动作参数。
答案 6 :(得分:-1)
您可以使用Chrome rest客户端扩展程序检查您的网络服务是否正常运行,以便通过此应用上传多部分数据 - http://itunes.apple.com/us/app/rest-client/id503860664?ls=1&mt=8