php上传脚本有问题吗?

时间:2009-12-07 07:32:09

标签: php html upload

 function getExtension($str) {
         $i = strrpos($str,".");
         if (!$i) { return ""; }
         $l = strlen($str) - $i;
         $ext = substr($str,$i+1,$l);
         return $ext;
 }

define ("MAX_SIZE","2000"); 

if( isset($_FILES['file_upload']))
 {

$errors=0;
$image=$_FILES['file_upload']['name'];
if ($image) 
{
    $filename = stripslashes($_FILES['file_upload']['name']);
    $extension = getExtension($filename);
    $extension = strtolower($extension);
    if (($extension != "jpg") && ($extension != "bmp") && ($extension != "png") && ($extension != "gif")) 
        {
            echo '<h1>Unknown extension!</h1>';
            $errors=1;
        }
    else
        {
            $size=filesize($_FILES['file_upload']['tmp_name']);
            if ($size > MAX_SIZE*1024)
            {
                echo '<h1>You have exceeded the size limit!</h1>';
                $errors=1;
            }
                $random_name=md5(uniqid(mt_rand(), true)).'.'.$extension;   
                $from=$_FILES['file_upload']['tmp_name'];               
                $newname='"temp_images/'.$random_name.'"';                      
                rename($from, $newname);     Problm is here?????
                                    //move_uploaded_file($from, $newname); Even tried this

            }   
}       

}

我不知道为什么图像没有在temp_images文件夹中移动。任何人都可以帮助我。提前谢谢。

编辑:

HTML表格:

 <form name="form_upload" action="<?=$PHP_SELF?>"  method="post" enctype="multipart/form-data">
                                        <table   class='nryo_modal_div_table' align='center'>
<tr>
<td align='left'  class='response_color_ok'>
Select File:
    </td>                                               </tr>                                       <tr>

                   

2 个答案:

答案 0 :(得分:1)

确保 temp_images 文件夹具有写入权限; chmod到755。

还要确保在用于上传图片的表单上指定了 enctype = multipart

答案 1 :(得分:0)

您可能想尝试使用move_uploaded_file功能而不是重命名功能。如sarfraz所述,还要检查 temp_images 文件夹是否设置了适当的权限。

这是我通常做的事情:

if(move_uploaded_file($_FILES['file_upload']['tmp_name'], $newname)) {
  //move okay
}else{
  //move not okay
}

要以编程方式更改文件夹的权限,请查看PHP函数chmod()