2013-07-08 79 views
0

我有IIS上的PHP安裝程序,並試圖在CakePHP內實現文件上傳。文件不會上傳在PHP

我已經遵循了文件上傳的必要準則,但每次上傳時,我都會收到uploadError。即使temp_name爲空也會出現問題。

最初以爲IIS沒有寫權限的臨時文件夾,但它沒有工作,即使考慮經過充分的權利IIS_IUSRSIUSR

array(5) { 
    ["name"]=> 
    string(14) "DSC02474_2.JPG" 
    ["type"]=> 
    string(0) "" 
    ["tmp_name"]=> 
    string(0) "" 
    ["error"]=> 
    int(1) 
    ["size"]=> 
    int(0) 
}   

FORM

<?php 
    echo $this->Form->create('User', array('class'=>'form-horizontal', 'action'=>'uploadProfilePicture', 'id'=>'change-picture', 'type'=>'file')); 
    echo $this->Form->input('id', array('value'=>$authUser['id'])); 
    echo $this->Form->file('picture'); 
?> 
<input type="submit" value="Upload" class="btn btn-info" name="submit"> 
<?php echo $this->Form->end(); ?> 

HANDLER IN MODEL

public function uploadFile($check) { 

    $uploadData = array_shift($check); 
    if ($uploadData['size'] == 0 || $uploadData['error'] !== 0) { 
     return false; 
    } 

    $uploadFolder = APP.'uploads'.DS."profile-pictures"; 
     $fileName = time()."_".$uploadData['name']; 
    $uploadPath = $uploadFolder . DS . $fileName; 

    if(!file_exists($uploadFolder)){ 
     mkdir($uploadFolder); 
    } 

    if (move_uploaded_file($uploadData['tmp_name'], $uploadPath)) { 
     $this->set('picture', $fileName); 
     return true; 
    } 

    return false; 
} 
+1

您可以添加您使用的表單代碼嗎? –

+1

完成!編輯問題 – yomexzo

回答

0

我剛剛在http://php.net/manual/en/function.is-uploaded-file.php上發現了我的問題的解決方案。

如果你的$ _FILES和$ _POST是空的,這可能是由於

  • 通過post_max_size設置選項設置的限制
  • 通過的upload_max_filesize在php.ini中設置的限制

不幸的是,第一個限制不會報告爲$ _FILES ['error']中的錯誤代碼。

+0

如果您忘記在窗體上聲明'enctype =「multipart/form-data」',您也可以獲得空的'$ _FILES',就像我一樣。 –