喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
 11  1/2  1  2  > 
     
标题: 表单中其它变量可以传递,但是无法上传文件。  
 
minileo
注册会员
Rank: 2



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;
}
?>
2006-6-18 11:34 PM#1
查看资料  发短消息  顶部
 
matchless (matchless)
注册会员
Rank: 2
一般会员



UID 67371
精华 0
积分 106
帖子 108
金钱 106 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-12-21
状态 离线
[推荐阅读] 关于ssl
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
2006-6-19 09:27 AM#2
查看资料  发短消息  顶部
 
minileo
注册会员
Rank: 2



UID 75135
精华 0
积分 87
帖子 59
金钱 87 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-17
状态 离线
[推荐阅读] 朋友们 求救
楼上意思是要限制上传文件的大小吗?
我的另一个表单是这样的:
<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变量。

[ 本帖最后由 minileo 于 2006-6-19 11:24 AM 编辑 ]
2006-6-19 11:12 AM#3
查看资料  发短消息  顶部
 
minileo
注册会员
Rank: 2



UID 75135
精华 0
积分 87
帖子 59
金钱 87 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-17
状态 离线
[推荐阅读] php群
就是用这段代码放在submit.php的开头测试的:
<?PHP
Ob_Start();
Session_Start();
Echo "<pre>";

Echo "本页得到的_GET变量有:";
Print_R($_GET);

Echo "本页得到的_POST变量有:";
Print_R($_POST);

Echo "本页得到的_COOKIE变量有:";
Print_R($_COOKIE);

Echo "本页得到的_SESSION变量有:";
Print_R($_SESSION);
Echo "</pre>";
?>


结果是


本页得到的_GET变量有:Array
(
)
本页得到的_POST变量有:Array
(
    [MAX_FILE_SIZE] => 100000
    [ttt] =>
    [submit] => 上传
)
本页得到的_COOKIE变量有:Array
(
)
本页得到的_SESSION变量有:Array
(
)

没有$myfile
2006-6-19 11:29 AM#4
查看资料  发短消息  顶部
 
phphp
版主
Rank: 7Rank: 7Rank: 7
加班一族


UID 65188
精华 1
积分 182
帖子 3005
金钱 171 喜悦币
威望 10
人脉 1
阅读权限 100
注册 2005-7-20
来自 北京市海淀区
状态 离线
[推荐阅读] php +文本数据库,无法写入数据?


没看到你发一个全的
<?php print_r($_FILES); ?>
<form method="post" enctype='multipart/form-data'>
<input name='f' type="file"><input type="submit"></form>




书到用时方恨少, 事非经过不知难
2006-6-19 11:43 AM#5
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
风和日丽 (风和日丽)
高级会员
Rank: 4
中级会员



UID 28569
精华 0
积分 699
帖子 703
金钱 699 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2004-5-15
来自 深圳
状态 离线
[推荐阅读] 低价出售全新电脑配件
是不是服务器有问题?
2006-6-19 11:44 AM#6
查看资料  访问主页  发短消息  QQ  顶部
 
minileo
注册会员
Rank: 2



UID 75135
精华 0
积分 87
帖子 59
金钱 87 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-17
状态 离线
[推荐阅读] 各款全新手机最新报价,五折批发全国手机充值卡


QUOTE:
原帖由 phphp 于 2006-6-19 11:43 AM 发表

没看到你发一个全的
<?php print_r($_FILES); ?>
<form method="post" enctype='multipart/form-data'>
<input name='f' type="file"><input type="submit&q ...
是说我代码不全吗?

这是前台表单:

<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 "<pre>";

Echo "本页得到的_GET变量有:";
Print_R($_GET);

Echo "本页得到的_POST变量有:";
Print_R($_POST);

Echo "本页得到的_COOKIE变量有:";
Print_R($_COOKIE);

Echo "本页得到的_SESSION变量有:";
Print_R($_SESSION);
Echo "</pre>"; //这是测试代码;

$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;
}
?>

谁能教教我怎么帖一大段花花绿绿的代码出来...我用回复上面的插入代码命令,在跳出来的对话框里一次只能粘一行...

[ 本帖最后由 minileo 于 2006-6-19 04:17 PM 编辑 ]
2006-6-19 04:05 PM#7
查看资料  发短消息  顶部
 
phphp
版主
Rank: 7Rank: 7Rank: 7
加班一族


UID 65188
精华 1
积分 182
帖子 3005
金钱 171 喜悦币
威望 10
人脉 1
阅读权限 100
注册 2005-7-20
来自 北京市海淀区
状态 离线
[推荐阅读] 低价出售全新原装笔记本电脑
用[php] [ /php]
<?php print_r($_FILES); ?>
<form method="post" enctype='multipart/form-data'>
<input name='f' type="file"><input type="submit"></form>
能用吗?




书到用时方恨少, 事非经过不知难
2006-6-19 06:29 PM#8
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
minileo
注册会员
Rank: 2



UID 75135
精华 0
积分 87
帖子 59
金钱 87 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-17
状态 离线
[推荐阅读] 低价出售全新原装数码相机及数码摄像机
是把这一段当作一个单独表单还是加在后台的PHP里面?
不过我两种都试了,但是很奇怪,把它们上传到服务器里,进入表单页面,选择文件,按上传后,首先出现一个“无法显示网页”的界面,刷新一下,才出现结果界面,昨天明明上传后直接到结果界面的。
不过还是无法上传...
2006-6-19 10:15 PM#9
查看资料  发短消息  顶部
 
minileo
注册会员
Rank: 2



UID 75135
精华 0
积分 87
帖子 59
金钱 87 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-17
状态 离线
[推荐阅读] 奇怪的现象
结果就像这个样子:(那个7.wma就是我上传的文件,大小为869k)

Array ( [f] => Array ( [name] => 7.wma [type] => [tmp_name] => [error] => 6 [size] => 0 ) )

你上传了文件:
文件的 MIME 类型为:
上传文件大小:
文件上传后被临时储存为:
上传成功
2006-6-19 10:18 PM#10
查看资料  发短消息  顶部
 11  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.032005 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP