if(is_uploaded_file($ _ FILES [image] [name]))不起作用

时间:2012-02-18 09:43:09

标签: php

if (is_uploaded_file($_FILES[image][name]))
{
    $row_PID = $_REQUEST['PID'];
    $sql = "SELECT * FROM tbl_image where PID='".$str_PID."'";
    $row    =   mysql_query($sql, $conn);

    while($getPID=mysql_fetch_array($row))
    {
        $PID = $getPID['PID'];
        $sqldelete ="delete from tbl_image where PID ='".$PID."'";
        tep_db_query($sqldelete,$conn);
    }

    while(list($key,$value) = each($_FILES[image][name]))
    {
        if(!empty($value)) 
        {   
            $filename = $value;  // filename stores the value
            $add = "../upload/portfolio/$filename";  // upload directory path is set
            copy($_FILES[image][tmp_name][$key], $add);
            chmod("$add",0777); 
        } 

        $query="insert into tbl_image (ImageID,PID,ImagePath,DateCreated,LastUpdate) values ('','$str_PID','$filename',now(),now())";
        tep_db_query($query, $conn);
    }
}

我没有访问if (is_uploaded_file($_FILES[image][name]))这个条件

1 个答案:

答案 0 :(得分:0)

if (is_uploaded_file($_FILES[image][name]))

不起作用,因为$_FILES['image']['name']不包含磁盘上文件的路径。这在the PHP manual

中有明确解释
  

为了正常工作,函数is_uploaded_file()需要一个参数   例如$_FILES['userfile']['tmp_name'], - 上传文件的名称   在客户端的计算机上$_FILES['userfile']['name']不起作用。

那并且您没有引用数组键,因此它们将被评估为PHP常量而不是字符串。你应该使用:

if (is_uploaded_file($_FILES['image']['tmp_name']))

注意每个数组键和修正变量周围的撇号(单引号)。