2015-07-19 93 views
0

我有一个class的名称输入。在此class内是function,其被称为iData。这function是用来获取文件上传数据,这里的功能。move_uploaded_file()不会移动文件

public static function iData($item, $spec = '') 
{ 
    if (isset($_FILES[$item])) { 
     if ($spec == '') { 
      return $_FILES[$item]; 
     }else{ 
      $f = $_FILES[$item]; 
      if($f[$spec]) { 
       return $f[$spec]; 
      } 
     } 
    } 
    return false; 
} 

但在我controller(通过我使用的MVC设计模式的方式),当我告诉它移动它没有保存文件。这是我的controller的代码。

if (!empty(Input::iData('file', 'name'))) { 
    if (is_dir('assets/')) { 
     if (move_uploaded_file(Input::iData('file', 'name'), 'assets/')) { 
      echo "File was moved!"; 
     } else { 
      echo "File failed to move!"; 
     } 
    } 
} else { 
    echo "Please include a file to upload!"; 
} 

我的页面echo s“File failed to move!”。所以如果该目录存在,我知道输入classiData函数返回名称,有什么问题?

+0

验证您是否有权将文件放在那里。 – akmozo

+0

我确实拥有正确的权限。 –

+0

您需要在'$ _FILES [$ item] ['tmp_name']'中使用临时名称作为调用'move_uploaded_file()'的源文件。 – 2015-07-19 00:45:19

回答

1

所有已修复。非常感谢Hobo Sapiens

我本来应该使用tmp_name而不是name。而且,我将所需的文件名从move_uploaded_file的第二个参数中删除。