我很难通过PHP上传文件。
我的表格:
<form action="blah.php" enctype="multipart/form-data" method="post">
<p> Upload file: <input type="file" name="xmlfile"/>
<input type="submit" name="upload_submit" value="Upload" /> </p>
</form>
清单:
看不到'聪明'的引用。细
正确的enctype。细
输入标记中的名称属性。细
我的/tmp
目录具有以下权限:drwxrwxrwt
。细
post_max_size = 50M,upload_max_filesize = 50M,file_uploads = On。细
print_r($_FILES)
给出Array()
。无用。尝试使用图像,xml文件等。没有任何作用。
我还不明白的是,有些页面上的文件上传工作在同一台服务器上。与我能收集到的唯一不同的是,我正在处理的页面有一些不属于enctype="multipart/form-data"
的其他形式。这有关系吗?
请求的PHP代码:
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if(isset($_POST['upload_submit'])){
print_r($_FILES);
exit();
...
}
}
无论print_r
的位置如何,都会给出一个空数组;我也在if($_SERVER['REQUEST_METHOD'] == 'POST'){
答案 0 :(得分:0)
您确定要提交正确的表格,还是在正确的位置/脚本处理提交的数据?请提供一些PHP代码。
答案 1 :(得分:0)
你的,这个php脚本(如blah.php)
编辑进行调试,转储$_POST
if
为false
error_reporting(E_STRICT);
ini_set('display_errors', 'on');
if(array_key_exists('xmlfile', $_FILES)) {
echo 'file ' , $_FILES['xmlfile']['name'] , ' recieved';
echo '<pre>'
, print_r($_POST, true)
, print_r($_FILES, true)
, '</pre>';
} else {
echo '<pre>'
, print_r($_POST, true)
, '</pre>';
}
(可能)输出:
file rapid-gui-development-with-qtruby_p1_4.mobi recieved
Array
(
[upload_submit] => Upload
)
Array
(
[xmlfile] => Array
(
[name] => rapid-gui-development-with-qtruby_p1_4.mobi
[type] => application/octet-stream
[tmp_name] => /private/tmp/phpEyV3vy
[error] => 0
[size] => 556846
)
)
答案 2 :(得分:0)
你提到在页面上有其他表格......是否正确关闭?例如,如果你有:
<form method="post">
blah blah blah
<input type="submit" />
<!-- oops forgot to </form> here -->
<form method="post" enctype="multipart/form-data">
...
<input type="submit" />
</form>
然后,FIRST <form>
标记可以在没有设置enctype的情况下获得优先权和提交。
如果你使用的是Firefox,我建议使用Firebug / HTTPFox / LiveHTTPHeaders(所有可用于FF的附加组件库)来查看通过网络发送的内容,并通过验证器运行页面以确保有没有愚蠢的HTML错误造成这种情况。