<body>
<?php
$up_types=array('image/jpg',
'image/jpeg',
'image/png',
'image/pjpeg',
'image/gif',
'image/bmp',
'image/x-png');
$max_file_size=2000000;    
$destination_folder="uploadimg/"; 
$imgpreview=1;      
$imgpreviewsize=1/2;   
?>
<form enctype="multipart/form-data"  method="post" name="upload">
<input type="file" name="upfile" />
<input  type="submit" value="chuan" />
</form>
<?php
if($_SERVER['REQUEST_METHOD']=='POST')
{
if (!is_uploaded_file($_FILES["upfile"]['tmp_name']))    {
         echo "图片不存在!";
         exit;
    }
$file = $_FILES["upfile"];
    if($max_file_size < $file["size"])    {
        echo "文件太大!";
        exit;
    }
if(!in_array($file["type"], $up_types))
    {
        echo "文件类型不符!".$file["type"];
        exit;
    }
if(!file_exists($destination_folder))
    {
        mkdir($destination_folder);
    }
$filename=$file["tmp_name"];
    $image_size = getimagesize($filename);
    $pinfo=pathinfo($file["name"]);
    $ftype=$pinfo['extension'];
    $destination = $destination_folder.time().".".$ftype;
    if (file_exists($destination) && $overwrite != true)
    {
        echo "同名文件已经存在了";
        exit;
    }/*    if(!move_uploaded_file ($filename, $destination))
    {
        echo "移动文件出错";
        exit;
    }      请问把这里注释掉以后是否还是上传成功?还有如果我不移动的话他会传到我的哪个文件夹呐????求解释*/

$pinfo=pathinfo($destination);
    $fname=$pinfo["basename"];
    echo " <font color=red>已经成功上传</font><br>文件名:  <font color=blue>".$destination_folder.$fname."</font><br>";
    echo " 宽度:".$image_size[0];
    echo " 长度:".$image_size[1];
    echo "<br> 大小:".$file["size"]." bytes";
 if($imgpreview==1)
    {
    echo "<br>图片预览:<br>";
    echo "<img src=\"".$destination."\" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
    echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">";
    }
}
?>
</body>
</html>

解决方案 »

  1.   

    上传的文件都先存储在临时文件夹,见php.ini  upload_tmp_dir 
      

  2.   

    把那行注释掉的话。只是上传到临时目录,没有移动到目标目录。临时目录在根目录的的tmp/文件夹内。
      

  3.   


    但是我的tmp下没有文件啊。。而且这个php问题好像不止一个,就是如果uploadimg如果已有了一个图片,再上传还能传上。
      

  4.   

    tmp临时文件夹。你重启机器后都会清除。如果uploadimg如果已有了一个图片,再上传还能传上。
       因为你是以当前时间戳作为文件名的。。所以不会导致重复。
      

  5.   

    把TMP跟上传目录都加可写权限。这个是权限问题
      

  6.   

    上传的临时文件保存在 upload_tmp_dir 指向的目录中,若未定义则保留在操作系统的临时文件目录中
    上传的临时文件无论是否处理,都将在对应 php 程序结束后被删除
      

  7.   

    我上传成功了,我是错在表单要加enctype="multipart/form-data"如:<form action="" method="POST" enctype="multipart/form-data">;希望对你加帮助。