minileo
注册会员

UID 75135
精华
0
积分 87
帖子 59
金钱 87 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-17
状态 离线
|
表单中其它变量可以传递,但是无法上传文件。
试了好几种上传代码,就算用论坛置顶帖里的也不行(帖在后面了),测试了一下,发现是后台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 "<p>你上传了文件:";
echo $_FILES['upload_file']['name'];
echo "<br>";
//客户端机器文件的原名称。
Echo "文件的 MIME 类型为:";
echo $_FILES['upload_file']['type'];
//文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。
echo "<br>";
Echo "上传文件大小:";
echo $_FILES['upload_file']['size'];
//已上传文件的大小,单位为字节。
echo "<br>";
Echo "文件上传后被临时储存为:";
echo $_FILES['upload_file']['tmp_name'];
//文件被上传后在服务端储存的临时文件名。
echo "<br>";
$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;
}
?>
|
|