php中的move_uploaded_file()函数问题

各位达人这是我模仿书上的一个PHP程序,但是出了问题,主要是move_uploaded_file()这个函数。无论怎么样move_uploaded_file($_FILE... 各位达人这是我模仿书上的一个PHP程序,但是出了问题,主要是move_uploaded_file()这个函数。无论怎么样move_uploaded_file($_FILES['upload'.$num]['tmp_name'],$location.$_FILES['upload'.$num]['name'])这一段结果总是为0,也就是FALSE.导致每次输出的$evernt总是失败。也就是上传失败。

高人们,程序主体运行没有错,主要是这个函数的问题与$location="./temp/"这个位置到底是指电脑的哪个文件搞不懂。跪谢。

<?php
if(isset($_POST['set'])){
$number=$_POST['number'];}
else {
$number=5;}
$max_size=1000000;
$location="./temp/";
?>
<center>
文件上传系统</center>
<?php if(!isset($_POST['upload'])){ ?>
<form action="upload.php" method="post">
<table width="635">
<tr> <td width="100%"><b>上传文件数</b></td></tr>
<tr><td><input name="number" type="text" id="number" value="<?php echo $number?>" >
<input name="set" type="submit" id="set" value="设置" >

你可以设置上传的文件数
</td></tr></table>
</form>
<form method="post" enctype="multipart/form-data" action="upload.php" >
<table width="635" >
<tr><td>文件上传</td></tr>
<tr>
<td width="100%" ><table border="0" width="100%" cellpadding="4"><tr>
<td width="30%">选择上传文件</td>
<td width="70%" >
<input type="hidden" name="MAX_FILE_SIZE" size="5200000">

<?php
for($count=1;$count<$number+1;$count++){
echo '<input type="file" name="upload'.$count.'" size=29><BR>';
}
?>
</td>
</tr>
</table>

</td>
</tr>
</table>
<input type=hidden name=number value="<?php echo $number; ?>">
<input type="submit" value="开始上载" name="upload">
</form>
<?php
} else { ?>
<table width="674">
<tr>
<td width="100%">
文件上传信息</td>
</tr>
<Tr>
<td width="100%" >
<table border="0" width="100%" cellspacing="3" cellpadding="6">
<tr>
<td width="25%" >文件名</td>
<td width="25%" >大小</td>
<td width="25%" >类型</td>
<td width="25%" >状态</td>
</tr>
<?php
for($num=1;$num<$_POST['number']+1;$num++){
$evernt="success";
if(!$_FILES['upload'.$num]['name']==""){
if($_FILES['upload'.$num]['size']<$max_size){
echo "文件上传路径:".$location.$_FILES['upload'.$num]['name'];
move_uploaded_file($_FILES['upload'.$num]['tmp_name'],$location.$_FILES['upload'.$num]['name']) or $event="Failure";
}
else{
$event="File too large";
}
echo "<tr>";
echo "<td width=25%>".$_FILES['upload'.$num]['name']."</td>";
echo "<td width=25%>".$_FILES['upload'.$num]['size']."bytes</td>";
echo "<td width=25%>".$_FILES['upload'.$num]['type']."</td>";
echo "<td width=25%>".$event."</td>";
echo "</tr>";
}
}
?>
</table>
</td>
</Tr>
</table>
<a href="upload.php">上传更多文件</a>;
</center>
<?php } ?>

谢谢哈
展开
 我来答
JovenShao
2008-07-29 · TA获得超过514个赞
知道小有建树答主
回答量:1161
采纳率:80%
帮助的人:617万
展开全部
你的程序也太乱了
请注意你的程序的规范

你所说的$location="./temp/"这个是指在当前目录下的temp目录
也就是和你的upload.php同级的

我给你把程序修改了下,你再看看吧

<?php
header("Content-Type:text/html; charset=gb2312;");
if(isset($_POST['set'])) $number=$_POST['number'];
else $number=5;

$max_size=1000000;

if(! is_dir("./temp/"))
{
mkdir("./temp/");
@chmod("./temp/",777);
}
$location="./temp/";

?>
<center>
文件上传系统</center>
<?php if(!isset($_POST['upload'])){ ?>
<form action="<?php echo $PHP_SELF; ?>" method="post">
<table width="635">
<tr> <td width="100%"><b>上传文件数</b></td></tr>
<tr><td><input name="number" type="text" id="number" value="<?php echo $number?>" >
<input name="set" type="submit" id="set" value="设置" >

你可以设置上传的文件数
</td></tr></table>
</form>
<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>" >
<table width="635" >
<tr><td>文件上传</td></tr>
<tr>
<td width="100%" ><table border="0" width="100%" cellpadding="4"><tr>
<td width="30%">选择上传文件</td>
<td width="70%" >
<input type="hidden" name="MAX_FILE_SIZE" size="5200000">

<?php
for($count=1;$count<$number+1;$count++){
echo '<input type="file" name="upload'.$count.'" size=29><BR>';
}
?>
</td>
</tr>
</table>

</td>
</tr>
</table>
<input type=hidden name=number value="<?php echo $number; ?>">
<input type="submit" value="开始上载" name="upload">
</form>
<?php
} else { ?>
<table width="674">
<tr>
<td width="100%">
文件上传信息</td>
</tr>
<Tr>
<td width="100%" >
<table border="0" width="100%" cellspacing="3" cellpadding="6">
<tr>
<td width="25%" >文件名</td>
<td width="25%" >大小</td>
<td width="25%" >类型</td>
<td width="25%" >状态</td>
</tr>
<?php
for($num=1;$num<$_POST['number']+1;$num++)
{
$evernt="success";
if(!$_FILES['upload'.$num]['name']=="")
{
if($_FILES['upload'.$num]['size']<$max_size)
{
echo "文件上传路径:".$location.$_FILES['upload'.$num]['name'];
move_uploaded_file($_FILES['upload'.$num]['tmp_name'],$location.$_FILES['upload'.$num]['name']) or $event="Failure";
}
else{
$event="File too large";
}
echo "<tr>";
echo "<td width=25%>".$_FILES['upload'.$num]['name']."</td>";
echo "<td width=25%>".$_FILES['upload'.$num]['size']."bytes</td>";
echo "<td width=25%>".$_FILES['upload'.$num]['type']."</td>";
echo "<td width=25%>".$event."</td>";
echo "</tr>";
}
}
?>
</table>
</td>
</Tr>
</table>
<a href="<?php echo $PHP_SELF; ?>">上传更多文件</a>;
</center>
<?php } ?>
edchina
2008-07-23
知道答主
回答量:13
采纳率:0%
帮助的人:8.5万
展开全部
首先复习一下基础
move_uploaded_file — 将上传的文件移动到新位置

说明
bool move_uploaded_file ( string $filename, string $destination )

本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件。

如果 filename 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 FALSE。

如果 filename 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 FALSE。此外还会发出一条警告。

这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。

$location在前面定义了 ./temp/
在php中
./表示当前目录
../表示上级目录
./temp表示当前目录里的temp目录

注意该目录不能为只读模式,还要注意,在win2003和xp\vista中,设置该文件夹的权限,添加一个everyone用户(拥有全部权限包括读写和列表)

建议你去掉后面的or $event="Failure"(不要去掉分号),根据文档

-------------------------------------------
如果 filename 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 FALSE。此外还会发出一条警告。

----------------------------------------------

你就可以根据这条警告获得你的错误原因,前提是你没在程序里或php.ini里设置屏蔽warning

如果是新手学习,不建议屏蔽warning,这样会获得更多的调试信息和程序优化建议.除非你对改语言已经非常熟悉,则可以屏蔽

参考资料: www.php.net

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
常伴2022
2008-07-22 · TA获得超过113个赞
知道小有建树答主
回答量:90
采纳率:0%
帮助的人:129万
展开全部
$location="./temp/";是指当前程序的目录的下级目录temp
如果有目录temp了,还要注意temp是否具有可写权限。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bigpwsbigpws
2008-07-27 · TA获得超过167个赞
知道小有建树答主
回答量:260
采纳率:33%
帮助的人:85.4万
展开全部
上传文件的表单必须这么写
<form name="form1" enctype="multipart/form-data" method="post" action="">
<input type="file" name="file" />
</form>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
womanv
2008-07-23 · TA获得超过818个赞
知道小有建树答主
回答量:898
采纳率:0%
帮助的人:1050万
展开全部
$_SERVER['DOCUMENT_ROOT'] . '/test'
这样可以传到根目录下的test目录里。。。这样写没有问题,应该是。。。
还有权限问题,目录是否存在的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式