2013-03-21 66 views
-1

我遇到了一些麻煩,試圖將上傳文件放入函數元素中。上傳文件的功能不起作用

我有一個包含輸入類型文件的表單,但是當我嘗試保存它時不起作用。

我已經做了一個函數,應該全部記錄並保存,然後返回一條消息,但除了上傳文件以外,所有工作都正常。這裏下面

是我的功能

/** 
* Enregistrement d'un nouvel athlète 
* @param type $nom 
* @param type $prenom 
* @param type $date_naissance 
* @param type $localisation 
* @param type $taille 
* @param type $poids 
* @param type $actif 
* @param type $biographie 
* @param type $url_photo 
* @return string|null 
*/ 
function recordNewAthlete($nom, $prenom, $date_naissance, $localisation, $taille, $poids, $actif, $biographie, $fileuplouad) { 
    $input_nom = mysql_real_escape_string($nom); 
    $input_prenom = mysql_real_escape_string($prenom); 
    $input_date = date('Y-m-d', strtotime(mysql_real_escape_string($date_naissance))); 
    $input_localisation = mysql_real_escape_string($localisation); 
    $input_taille = mysql_real_escape_string($taille); 
    $input_poids = mysql_real_escape_string($poids); 
    $input_actif = mysql_real_escape_string($actif); 
    $input_biographie = ($biographie); 
    if (isset($input_nom) && !empty($input_nom)) { 
     if ($_FILES['$fileuplouad']['error']) { 
      switch ($_FILES['$fileuplouad']['error']) { 
       case 1: // UPLOAD_ERR_INI_SIZE  
        echo"Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !"; 
        break; 
       case 2: // UPLOAD_ERR_FORM_SIZE  
        echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !"; 
        break; 
       case 3: // UPLOAD_ERR_PARTIAL  
        echo "L'envoi du fichier a été interrompu pendant le transfert !"; 
        break; 
       case 4: // UPLOAD_ERR_NO_FILE  
        echo "Le fichier que vous avez envoyé a une taille nulle !"; 
        break; 
      } 
     } else { 
      // $_FILES['url_photo1']['error'] vaut 0 soit UPLOAD_ERR_OK  
      // ce qui signifie qu'il n'y a eu aucune erreur  
      $_FILES['$fileuplouad']['name'] = mktime() . $_FILES['$fileuplouad']['name']; 
      $url1 = $_FILES['$fileuplouad']['name']; 
      $chemin_destination = 'web/teamfrancestron/www/admin/uploads/'; 
      move_uploaded_file($_FILES['$fileuplouad']['tmp_name'], $chemin_destination . $_FILES['$fileuplouad']['name']); 
      $tartget_path = $chemin_destination . $_FILES['$fileuplouad']['name']; 
      $query = "INSERT INTO `stg_man_athletes` SET 
        `nom` = '{$input_nom}', 
        `prenom` = '{$input_prenom}', 
        `date_naissance` = '{$input_date}', 
        `localisation` = '{$input_localisation}', 
        `taille` = '{$input_taille}', 
        `poids` = '{$input_poids}', 
        `etat_activite` = '{$input_actif}', 
        `description` = '{$input_biographie}', 
        `url_photo` = '{$target_path}'"; 
      mysql_query($query); 
      if (mysql_affected_rows() >= 0) { 
       return "<div class='success'>Enregistrement de l'Athlète terminé, vous pouvez continuer vos actions.</div>" 
       ; 
      } else { 
       return "<div class='error'>Erreur fatale lors de l'enregistrement, veuillez réessayer ulterieurement.</div>"; 
      } 
     } 
    } else { 
     return null; 
    } 
} 

麻煩的是,它不動的任何文件,在定義的路徑。

我打電話給我的功能一樣,

$message_enregistr_athlete = recordNewAthlete($_POST['nom'], $_POST['prenom'], $_POST['date_naissance'], $_POST['localisation'], $_POST['taille'], $_POST['poids'], $_POST['etat_activite'], $_POST['description'], 'userfile'); 

,我只是迴應,我想看看是否上傳是確定的結果。 sql查詢正常,所有字段都正常工作。幫助

Anykind將非常感激

+0

你在這裏發帖求助前,應進行調試。在代碼的各個階段回顯變量以查看錯誤是什麼。 – Suyash 2013-03-21 04:36:45

回答

1
  1. 讓您error_repoting所有即error_repoting(1);,看看你得到任何錯誤。
  2. 如果你的文件過大請嘗試以下:

兩個PHP配置選項控制最大上傳大小:upload_max_filesizepost_max_size。對於10兆字節的文件大小,它們都可以設置爲「10M」。

但是,您還需要考慮完成上載所需的時間。 PHP腳本通常在30秒後超時,但一個10MB文件需要至少3分鐘才能在健康的寬帶連接上進行上傳(請記住,上傳速度通常比下載速度慢5倍)。此外,操縱或保存上傳的圖像也可能導致腳本超時。因此,我們需要PHP的max_input_time設置和的max_execution_time設置爲像300(以秒爲單位5分鐘)

在.htaccess中添加此代碼,

php_value upload_max_filesize 10M 
php_value post_max_size 10M 
php_value max_input_time 300 
php_value max_execution_time 300 

或者你可以使用你的PHP本身頁面進行設置ini_set

ini_set('upload_max_filesize', '10M'); 
ini_set('post_max_size', '10M'); 
ini_set('max_input_time', 300); 
ini_set('max_execution_time', 300); 

編號:http://www.sitepoint.com/upload-large-files-in-php/

+0

感謝您的快速回復,Actualy沒有出現錯誤,並且文件不是太大,對於測試我使用了124ko圖像 – 2013-03-21 04:45:44

+0

@StanislasPiotrowski:那麼你的'error_reporting'怎麼樣? – 2013-03-21 04:47:16

+0

我已經設置爲1,但沒有任何顯示 – 2013-03-21 04:48:09