php上傳導入文件,php 上傳

本文目錄一覽:

如何用php導出導入大數據庫

在使用PhpMyAdmin的時候經常用到數據的導入和導出(Export/Import),但是在導入大數據的時候由於php上傳文件的限制和腳本響應時間的限制,導致phpMyAdmin無法導入大數據。很多時候都是由於文件過大,從本地瀏覽上傳導入,容易中斷失敗,有沒有更好的方法呢?

方法:

在phpMyAdmin的目錄下,找到根目錄的config.inc.php文件,

打開config.inc.php文件,查找$cfg[‘UploadDir’],這個參數就是設定導入文件存放的目錄,這裡把值設定為:ImportSQLFile。

在phpMyAdmin目錄下,建立以ImportSQLFile命名的文件夾,

把我們需要導入的數據文件,放到ImportSQLFile文件夾下面,非常簡單,

登入phpMyAdmin,選擇需要導入的數據,點擊導航條上面的「導入」按鈕,

選中「從網站服務器上傳文件夾ImportSQLFile/中選擇:」選項,並需要導入的數據文件,

最後點擊「執行」,即可導入成功。

注意事項

如果在config.inc.php文件,沒有找到$cfg[‘UploadDir’],可以自己在文件中添加上去即可。

怎樣用PHP實現文件上傳

創建一個文件上傳表單

允許用戶從表單上傳文件是非常有用的。

請看下面這個供上傳文件的 HTML 表單:

html

body

form action=”upload_file.php” method=”post”

enctype=”multipart/form-data”

label for=”file”Filename:/label

input type=”file” name=”file” id=”file” /

br /

input type=”submit” name=”submit” value=”Submit” /

/form

/body

/html

請留意如下有關此表單的信息:

form 標籤的 enctype 屬性規定了在提交表單時要使用哪種內容類型。在表單需要二進制數據時,比如文件內容,請使用 “multipart/form-data”。

input 標籤的 type=”file” 屬性規定了應該把輸入作為文件來處理。舉例來說,當在瀏覽器中預覽時,會看到輸入框旁邊有一個瀏覽按鈕。

注釋:允許用戶上傳文件是一個巨大的安全風險。請僅僅允許可信的用戶執行文件上傳操作。

創建上傳腳本

“upload_file.php” 文件含有供上傳文件的代碼:

?php

if ($_FILES[“file”][“error”] 0)

{

echo “Error: ” . $_FILES[“file”][“error”] . “br /”;

}

else

{

echo “Upload: ” . $_FILES[“file”][“name”] . “br /”;

echo “Type: ” . $_FILES[“file”][“type”] . “br /”;

echo “Size: ” . ($_FILES[“file”][“size”] / 1024) . ” Kbbr /”;

echo “Stored in: ” . $_FILES[“file”][“tmp_name”];

}

?

通過使用 PHP 的全局數組 $_FILES,你可以從客戶計算機向遠程服務器上傳文件。

第一個參數是表單的 input name,第二個下標可以是 “name”, “type”, “size”, “tmp_name” 或 “error”。就像這樣:

$_FILES[“file”][“name”] – 被上傳文件的名稱

$_FILES[“file”][“type”] – 被上傳文件的類型

$_FILES[“file”][“size”] – 被上傳文件的大小,以位元組計

$_FILES[“file”][“tmp_name”] – 存儲在服務器的文件的臨時副本的名稱

$_FILES[“file”][“error”] – 由文件上傳導致的錯誤代碼

這是一種非常簡單文件上傳方式。基於安全方面的考慮,您應當增加有關什麼用戶有權上傳文件的限制。

上傳限制

在這個腳本中,我們增加了對文件上傳的限制。用戶只能上傳 .gif 或 .jpeg 文件,文件大小必須小於 20 kb:

?php

if ((($_FILES[“file”][“type”] == “image/gif”)

|| ($_FILES[“file”][“type”] == “image/jpeg”)

|| ($_FILES[“file”][“type”] == “image/pjpeg”))

($_FILES[“file”][“size”] 20000))

{

if ($_FILES[“file”][“error”] 0)

{

echo “Error: ” . $_FILES[“file”][“error”] . “br /”;

}

else

{

echo “Upload: ” . $_FILES[“file”][“name”] . “br /”;

echo “Type: ” . $_FILES[“file”][“type”] . “br /”;

echo “Size: ” . ($_FILES[“file”][“size”] / 1024) . ” Kbbr /”;

echo “Stored in: ” . $_FILES[“file”][“tmp_name”];

}

}

else

{

echo “Invalid file”;

}

?

注釋:對於 IE,識別 jpg 文件的類型必須是 pjpeg,對於 FireFox,必須是 jpeg。

保存被上傳的文件

上面的例子在服務器的 PHP 臨時文件夾創建了一個被上傳文件的臨時副本。

這個臨時的複製文件會在腳本結束時消失。要保存被上傳的文件,我們需要把它拷貝到另外的位置:

?php

if ((($_FILES[“file”][“type”] == “image/gif”)

|| ($_FILES[“file”][“type”] == “image/jpeg”)

|| ($_FILES[“file”][“type”] == “image/pjpeg”))

($_FILES[“file”][“size”] 20000))

{

if ($_FILES[“file”][“error”] 0)

{

echo “Return Code: ” . $_FILES[“file”][“error”] . “br /”;

}

else

{

echo “Upload: ” . $_FILES[“file”][“name”] . “br /”;

echo “Type: ” . $_FILES[“file”][“type”] . “br /”;

echo “Size: ” . ($_FILES[“file”][“size”] / 1024) . ” Kbbr /”;

echo “Temp file: ” . $_FILES[“file”][“tmp_name”] . “br /”;

if (file_exists(“upload/” . $_FILES[“file”][“name”]))

{

echo $_FILES[“file”][“name”] . ” already exists. “;

}

else

{

move_uploaded_file($_FILES[“file”][“tmp_name”],

“upload/” . $_FILES[“file”][“name”]);

echo “Stored in: ” . “upload/” . $_FILES[“file”][“name”];

}

}

}

else

{

echo “Invalid file”;

}

?

上面的腳本檢測了是否已存在此文件,如果不存在,則把文件拷貝到指定的文件夾。

注釋:這個例子把文件保存到了名為 “upload” 的新文件夾。

利用php導入excel文件

【步驟1】在前台html頁面進行上傳文件

form method=”post” action=”php文件” enctype=”multipart/form-data” 

h3導入Excel表:/h3input  type=”file” name=”file_stu” /

input type=”submit”  value=”導入” /

/form

【步驟2】在對應的php文件進行文件的處理

 if (! empty ( $_FILES [‘file_stu’] [‘name’] ))

 {    $tmp_file = $_FILES [‘file_stu’] [‘tmp_name’];    $file_types = explode ( “.”, $_FILES [‘file_stu’] [‘name’] );    $file_type = $file_types [count ( $file_types ) – 1];

     /*判別是不是.xls文件,判別是不是excel文件*/     if (strtolower ( $file_type ) != “xls”)                  {          $this-error ( ‘不是Excel文件,重新上傳’ );     }

    /*設置上傳路徑*/     $savePath = SITE_PATH . ‘/public/upfile/Excel/’;

    /*以時間來命名上傳的文件*/     $str = date ( ‘Ymdhis’ );      $file_name = $str . “.” . $file_type;

     /*是否上傳成功*/     if (! copy ( $tmp_file, $savePath . $file_name ))       {          $this-error ( ‘上傳失敗’ );      }

    /*

*對上傳的Excel數據進行處理生成編程數據,這個函數會在下面第三步的ExcelToArray類中

注意:這裡調用執行了第三步類裏面的read函數,把Excel轉化為數組並返回給$res,再進行數據庫寫入

    */  $res = Service ( ‘ExcelToArray’ )-read ( $savePath . $file_name );

   /*

重要代碼 解決Thinkphp M、D方法不能調用的問題

如果在thinkphp中遇到M 、D方法失效時就加入下面一句代碼

*/

 //spl_autoload_register ( array (‘Think’, ‘autoload’ ) );

/*對生成的數組進行數據庫的寫入*/

foreach ( $res as $k = $v )    {       if ($k != 0)       {           $data [‘uid’] = $v [0];           $data [‘password’] = sha1 ( ‘111111’ );           $data [’email’] = $v [1];

           $data [‘uname’] = $v [3];

          $data [‘institute’] = $v [4];         $result = M ( ‘user’ )-add ( $data );         if (! $result)          {              $this-error ( ‘導入數據庫失敗’ );          }      }   }

}

【步驟3】ExcelToArrary類,用來引用phpExcel並處理Excel數據的

class ExcelToArrary extends Service{

 public function __construct() {

     /*導入phpExcel核心類    注意 :你的路徑跟我不一樣就不能直接複製*/     include_once(‘./Excel/PHPExcel.php’); }

/**

* 讀取excel $filename 路徑文件名 $encode 返回數據的編碼 默認為utf8

*以下基本都不要修改

*/

public function read($filename,$encode=’utf-8′){

          $objReader = PHPExcel_IOFactory::createReader(‘Excel5’);

          $objReader-setReadDataOnly(true);

          $objPHPExcel = $objReader-load($filename);

          $objWorksheet = $objPHPExcel-getActiveSheet();

  $highestRow = $objWorksheet-getHighestRow();   $highestColumn = $objWorksheet-getHighestColumn();     $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);     $excelData = array();   for ($row = 1; $row = $highestRow; $row++) {       for ($col = 0; $col  $highestColumnIndex; $col++) {                  $excelData[$row][] =(string)$objWorksheet-getCellByColumnAndRow($col, $row)-getValue();           }          }         return $excelData;

    }

}

php上傳文件到文件夾

//這是給文件重命名

$one = explode(“.”,$_FILES[“file”][“name”]);

$file_name = $_FILES[“file”][“name”] = time().”.”.$one[1];

//這是上傳,用到move_uploaded_file,移動到:./assets/up/這個文件夾

move_uploaded_file($_FILES[“file”][“tmp_name”], “./assets/up/” . $file_name);

//這是往數據庫存放的 文件名稱

$information_img = “./assets/up/” . $file_name;

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/283357.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 08:07
下一篇 2024-12-22 08:08

相關推薦

發表回復

登錄後才能評論