2012-04-27 139 views
0

我想在php中使用文件上傳控件上傳CSV文件,如果文件大小超過10 MB,它不會上傳它只是掛起頁面執行。我已經設置CSV文件上傳問題

的ini_set( 「upload_max_filesize的」, 「50M」); ini_set(「post_max_size」, 「50M」);

在頁面上

,仍然沒有對任何me.If我運氣上傳文件高達8 MB的工作fine.I感到困惑,爲什麼isue仍然存在事件我有沒有設置相關的文件大小在同一頁面上傳。請幫幫我。

由於提前,

以下是我的PHP代碼

<?php 

    set_time_limit(0); ini_set('display_errors', 1); ini_set("upload_max_filesize", "100M"); ini_set("post_max_size", "100M"); 


ini_set("session.save_handler", "files"); session_start(); header ('Last-Modified: '.gmdate("D, d M Y H:i ").' GMT'); header ('Expires: '.gmdate("D, d M Y H:i ").' GMT'); header ('Cache-Control: no-cache, must-revalidate'); header ('Pragma: no-cache'); 

if ($_FILES['import']['error'] == UPLOAD_ERR_OK)   { 
      $tmpName = $_FILES['import']['tmp_name']; 
      $csvName = $_FILES['import']['name']; 
      $mime = $_FILES['import']['type']; 
      $validMimes = array('text/csv'); 


      if(!strpos($csvName, '.csv')) 
      { 
       $errMsg = ' [' . $csvName . '] is INVALID csv file (<i>csv only</i>)'; 
      } 

      if (is_uploaded_file($tmpName) && !isset($errMsg)) // upload photo file then save author if uploaded file is VALID 
      { 
       // upload photo to server 
       $filename = 'uploads/products/'; 

       $pathParts = pathinfo($csvName); 

       $photoFile = _generateUniquePhoto($pathParts['extension']); 

       //move_uploaded_file($tmpName, $filename . $photoFile); 

       //chmod($filename . $photoFile, 0777); 

       // save to database 
       $fullfilename = $filename.$photoFile; 
       //$this->data['University']['add_logo'] = $photoFile; 

       $ftp_server = "XXXXX"; 
       $ftp_user_name = "XXXX"; 
       $ftp_user_pass = "XXXXX"; 


       // set up basic connection 
       $conn_id = ftp_connect($ftp_server); 

       // login with username and password 
       $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

       // check connection 
       if ((!$conn_id) || (!$login_result)) 
       { 
         echo "FTP connection has failed!"; 
         echo "Attempted to connect to $ftp_server for user $ftp_user_name"; 
         exit; 
       } else 
       { 
         //echo "Connected to $ftp_server, for user $ftp_user_name"; 
       } 

       // upload the file 
       $destination_file1 = "httpdocs/volhub/client/$fullfilename"; 
       $sourcefile1 = "$tmpName"; 
       $upload = ftp_put($conn_id, $destination_file1, $sourcefile1, FTP_BINARY); // line 30 

       // check upload status 

       ftp_close($conn_id); } 
+0

根據PHP是否在安全模式下運行,則可能需要設置這個INI文件直接,而不是使用'的ini_set()' - 它是你自己的服務器?您可能還想考慮下面的JS替代方案之一,因爲它們通常是更好的體驗(進度條,多個同步文件等) – Basic 2012-04-27 10:31:42

+0

您最好檢查php.ini'upload_max_filesize和post_max_size' – alkhader 2012-04-27 11:41:42

回答

0

我有這個太,但沒有找到一個解決方案,過了一會兒,我決定利用「分塊」安上傳的javascript功能。你可以在plupload.com找到我正在使用的那個。在我看來,這很容易。

+0

因此,這不是真的是一個解決方案,但更多的是做你正在做的事情的另一種方式。 – Manuel 2012-04-27 10:28:25

1

,因爲他們是PHP_INI_PERDIR您不能修改與ini_set()這些設置。

你將不得不改變他們在php.ini本身或與(假設的Apache).htaccess文件。當腳本開始執行並調用ini_set()時,PHP已經決定接受或拒絕請求。

See here的關於與.htaccess更改設置的詳細信息。