表单中其它变量可以传递
时间:2008-01-11 来源:061107
原文
试了好几种上传代码,就算用论坛置顶帖里的也不行(帖在后面了),测试了一下,发现是后台php程序收不到前台表单POST过来的上传文件(比如upload_file)的变量,但是如果在前台加入其它变量是可以接收到的。 比如,我在前台表单里加入一个文本域,变量为$name,后台程序加一行 echo $name; 点提交运行的时候这个$name的值就可以在屏幕上看到。就是上传文件那一部分完全不起作用。假如我令$name值为ttt,那么运行代码的结果如下(第一行就是echo $name 的值):
ttt
你上传了文件:
文件的 MIME 类型为:
上传文件大小:
文件上传后被临时储存为:
上传成功
php.ini里register_globals也已经设成on了。
试了一天脑子都乱了,不知道说清楚没有,总之其它变量都可以传递,就是不能上传文件。请大家帮忙看看。
代码如下:
//form.html
html>head>
title>上载文件表单/title>/head>
body>
form enctype="multipart/form-data" action="submit.php" method="post">
请选择文件: br>
input name="upload_file" type="file">br>
input type="submit" value="上传文件">
/form>
/body>
/html>
//submit.php
?
$upload_file=$_FILES['upload_file']['tmp_name'];
$upload_file_name=$_FILES['upload_file']['name'];
if($upload_file){
$file_size_max = 1000*1000;// 1M限制文件上传最大容量(bytes)
$store_dir = "d:/";// 上传文件的储存位置
$accept_overwrite = 1;//是否允许覆盖相同文件
// 检查文件大小
if ($upload_file_size > $file_size_max) {
echo "对不起,你的文件容量大于规定";
exit;
}
// 检查读写文件
if (file_exists($store_dir . $upload_file_name) && !$accept_overwrite) {
Echo "存在相同文件名的文件";
exit;
}
//复制文件到指定目录
if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) {
echo "复制文件失败";
exit;
}
}
Echo "你上传了文件:";
echo $_FILES['upload_file']['name'];
echo "
";
//客户端机器文件的原名称。
Echo "文件的 MIME 类型为:";
echo $_FILES['upload_file']['type'];
//文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。
echo "
";
Echo "上传文件大小:";
echo $_FILES['upload_file']['size'];
//已上传文件的大小,单位为字节。
echo "
";
Echo "文件上传后被临时储存为:";
echo $_FILES['upload_file']['tmp_name'];
//文件被上传后在服务端储存的临时文件名。
echo "
";
$Erroe=$_FILES['upload_file']['error'];
switch($Erroe){
case 0:
Echo "上传成功"; break;
case 1:
Echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值."; break;
case 2:
Echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。"; break;
case 3:
Echo "文件只有部分被上传";break;
case 4:
Echo "没有文件被上传";break;
}
?>
我的另一个表单是这样的:
HTML>
HEAD>
TITLE>文件上传表格 /TITLE>
/HEAD>
body>
table>
form ENCTYPE="multipart/form-data" name="myform" method="post" action="submit.php">
input type="hidden" name="MAX_FILE_SIZE" value="100000">
tr>td>选择上传文件/td>td>input name="myfile" type="file">
input name="ttt" type="text" id="ttt">/td>/tr>
tr>td colspan="2">input name="submit" value="上传" type="submit">/td>/tr>
/form>
/table>
/body>
/HTML>
但是还是不能上传,测试代码显示submit.php没有收到myfile变量。
就是用这段代码放在submit.php的开头测试的:
?PHP
Ob_Start();
Session_Start();
Echo "";
Echo "本页得到的_GET变量有:";
Print_R($_GET);
Echo "本页得到的_POST变量有:";
Print_R($_POST);
Echo "本页得到的_COOKIE变量有:";
Print_R($_COOKIE);
Echo "本页得到的_SESSION变量有:";
Print_R($_SESSION);
Echo "";
?>
结果是
本页得到的_GET变量有:Array
(
)
本页得到的_POST变量有:Array
(
[MAX_FILE_SIZE] => 100000
[ttt] =>
[submit] => 上传
)
本页得到的_COOKIE变量有:Array
(
)
本页得到的_SESSION变量有:Array
(
)
没有$myfile
这是前台表单:
HTML>
HEAD>
TITLE>文件上传表格 /TITLE>
/HEAD>
body>
table>
form ENCTYPE="multipart/form-data" name="myform" method="post" action="submit.php">
input type="hidden" name="MAX_FILE_SIZE" value="100000">
tr>td>选择上传文件/td>td>input name="upload_file" type="file">
input name="ttt" type="text" id="ttt">/td>/tr>
tr>td colspan="2">input name="submit" value="上传" type="submit">/td>/tr>
/form>
/table>
/body>
/HTML>
这是后台submit.php:
?PHP
Ob_Start();
Session_Start();
Echo "";
Echo "本页得到的_GET变量有:";
Print_R($_GET);
Echo "本页得到的_POST变量有:";
Print_R($_POST);
Echo "本页得到的_COOKIE变量有:";
Print_R($_COOKIE);
Echo "本页得到的_SESSION变量有:";
Print_R($_SESSION);
Echo ""; //这是测试代码;
$upload_file=$_FILES['upload_file']['tmp_name'];
$upload_file_name=$_FILES['upload_file']['name'];
if($upload_file){
$file_size_max = 1000*1000;// 1M限制文件上传最大容量(bytes)
$store_dir = "d:/";// 上传文件的储存位置
$accept_overwrite = 1;//是否允许覆盖相同文件
// 检查文件大小
if ($upload_file_size > $file_size_max) {
echo "对不起,你的文件容量大于规定";
exit;
}
// 检查读写文件
if (file_exists($store_dir . $upload_file_name) && !$accept_overwrite) {
Echo "存在相同文件名的文件";
exit;
}
//复制文件到指定目录
if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) {
echo "复制文件失败";
exit;
}
}
Echo "你上传了文件:";
echo $_FILES['upload_file']['name'];
echo "
";
//客户端机器文件的原名称。
Echo "文件的 MIME 类型为:";
echo $_FILES['upload_file']['type'];
//文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。
echo "
";
Echo "上传文件大小:";
echo $_FILES['upload_file']['size'];
//已上传文件的大小,单位为字节。
echo "
";
Echo "文件上传后被临时储存为:";
echo $_FILES['upload_file']['tmp_name'];
//文件被上传后在服务端储存的临时文件名。
echo "
";
$Erroe=$_FILES['upload_file']['error'];
switch($Erroe){
case 0:
Echo "上传成功"; break;
case 1:
Echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值."; break;
case 2:
Echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。"; break;
case 3:
Echo "文件只有部分被上传";break;
case 4:
Echo "没有文件被上传";break;
}
?>
相关阅读 更多 +
排行榜 更多 +