文件上传,还是有问题,大家帮帮忙!

文件上传,还是有问题,大家帮帮忙!

表单代码:

----------------------------------------------------------------------------------------------------------------------
<form enctype="multipart/form-data" action="up_img.php?file=add.php&file_name=<? echo $file_name;?>" method="POST">
<td align=right>图片文件:</td>
<td>
<input type=file name=upfile size=30 value=""
<?
if (!empty($img_name) || !$img==""):
echo "disabled";
endif;
?>
>
<input type=submit value=" 上传 "
<?
if (!empty($img_name) || !$img==""):
echo "disabled";
endif;
?>
>
</td>
</form>
--------------------------------------------------------------------------------------------------------------------------

处理程序代码:
-------------------------------------------------------------------------------------------------------------------------

$temp_name = $_FILES['upfile']['tmp_name'];
$datetime = date("YmdHis_");
$img_name = $datetime.$upfile['name'];
$filename = "../img/".$datetime.$upfile['name'];
if (move_uploaded_file($temp_name,$filename)):
if (!$old_img_name==""):
$delfilename = "../img/".$old_img_name;
unlink($delfilename);
endif;
echo "<a href=\"add.php?img_name=$img_name&file_name=$file_name\">上传成功!</a>";
echo "<META HTTP-EQUIV=REFRESH CONTENT=\"0;URL=$file?id=$id&img_name=$img_name&file_name=$file_name\">";
else:
echo "上传失败! \n";
echo "<a href=javascript:history.back(1)>点击这里返回</a>\n";
endif;

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

情况说明:
-------------------------------------------------------------------------------------------------------------------------
虚机的PHP设置:
safe_mode Off
register_globals Off
upload_tmp_dir no value

PHP Version 4.4.2

在register_globals ON时一切正常。
代码做了如下调整后,运行提示上传失败。并且试着打印$temp_name为空。

打印$upfile['name']是能够打印出来上传文件的名称的。只是不带本地的路径。
打印$upfile时,为array。所以改
if (copy($upfile,$filename)):

if (move_uploaded_file($temp_name,$filename)):
还是不行。
并且如下代码也好像不能正常工作,会执行else:后的内容,所以让我去掉了。
if (($upfile[type]=="image/gif") || ($upfile[type]=="image/pjpeg") || ($upfile[type]=="image/x-png")):
else:
-------------------------------------
连@extract($HTTP_POST_FILES, EXTR_SKIP);这个代码我都加了。上传失败。

//$upfile=$HTTP_POST_FILES["upfile"];

//$upfile=$_FILES['upfile'];

上面两行也试过了呀。

大家帮帮忙!

这里有示例。你自己看看吧
http://www.phpfans.net/bbs/viewt ... hlight=%CE%C4%BC%FE
毕业了。。。

谢谢了!

http://www.phpfans.net/bbs/viewt ... hlight=%CE%C4%BC%FE
这个地址的内容,我单独生成一个PHP,测试还是不行。如下:

if(isset($_FILES['userfile']['tmp_name'])){
$userfile = $_FILES['userfile']['tmp_name']; //保存在系统的临时位置
$userfile_name = $_FILES['userfile']['name'];//文件名
$userfile_size = $_FILES['userfile']['size'];//文件大小,字节
$userfile_type = $_FILES['userfile']['type'];//文件类型

if(!is_dir("image123")) mkdir ("image123", 0777);
$upfile = "image123/".$userfile_name;//保存位置
//print_r($_FILES);

//move_uploaded_file($userfile,$upfile);//方法1
if(!move_uploaded_file($userfile,$upfile))//方法2
//if(!copy($userfile,$upfile))//方法2
{
echo "上传失败<br/>";
print $userfile;
print '<br/>';
print $userfile_name;
print '<br/>';
print $upfile;
exit();
}
echo "上传成功";
echo "<a href=\"#\" onClick=\"window.history.back();\">再上传一张</a>";
}

两种方法都试了。结果:

上传失败

pic_03.gif
image123/pic_03.gif
---------------------------------------------------------------------------------------------

$userfile这个变量没有打印出来东西来,这是什么原因呢?问题一定是出在这。各位有没有知道这是怎么回事呢?

补一下表单部分:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body>
<form action="" method="post" enctype="multipart/form-data" name="form1">
  <input name="MAX_FILE_SIZE" type="hidden" id="MAX_FILE_SIZE" value="10000">
  <input name="userfile" type="file" id="userfile">
  <input type="submit" name="Submit" value="上传">
</form>
</body>
</html>
<?php }?>
</body>
</html>