萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php中上傳圖片文件的PHP函數

php中上傳圖片文件的PHP函數

在php中上傳圖片我們全結合$_files 與move_uploaded_file函數來一起操作,從而實現從客戶端把文件上傳到服務器端了,下面一起來看看具體的操作子。

編程環境

PHP5.2.4,基本上PHP4.3以上版本,此代碼都可以使用

准備工作

檢查upload_tmp_dir項

如果PHP的開發環境是自行搭建的,你需要在編寫文件上傳程序前編輯php.ini文件,找到並編輯upload_tmp_dir選項,此項用來設定文件上傳至服務器時的臨時文件夾,比如upload_tmp_dir = E:/phpos/uploads,然後再重啟Apache。如果PHP的開發環境使用的是傻瓜式一鍵安裝包,一般upload_tmp_dir都是設定好了的,你也可以用phpinfo()函數查看下配置

html

 代碼如下 復制代碼 <input name="userfile" type="file">

示例:

 代碼如下 復制代碼

if (! empty ( $_FILES ['file'] ['name'] )) {
 $img = $this->up_file ( "file" );
}

up_file()函數:

 代碼如下 復制代碼

function up_file($inputname, $destinate = "../data/agency/", $type = "", $maxSize = 0) {
 $arr = explode ( '.', $_FILES [$inputname] ['name'] );
 $count = count ( $arr );
 $typearr = explode ( ',', $type );
 
 if (! empty ( $type )) {
  if (! in_array ( $arr [$count - 1], $typearr )) {
   $this->show_warning ( '文件類型不允許上傳' );
   exit ();
  }
 }
 if ($maxSize != 0) {
  if (($_FILES [$inputname] ['size'] / 1000) >= $maxSize) {
   $this->show_warning ( '文件大小超過限制' );
   exit ();
  }
 }
 
 if (! empty ( $destinate )) {
  $destinate = substr ( str_replace ( "", "/", $destinate ), - 1 ) == "/" ? $destinate : $destinate . "/";
  if (! is_writable ( $destinate )) {
   $this->show_warning ( '文件目錄發生錯誤' );
   exit ();
  }
 }
 $filename = date ( "YmdHis" ) . (microtime () * 1000000) . "." . $arr [$count - 1];
 
 if (is_file ( $destinate . $filename )) {
  up_file ( $inputname, $destinate = "", $type = "", $maxSize = 0 );
 } else {
  $filename = $filename;
 }
 copy ( $_FILES [$inputname] ['tmp_name'], $destinate . $filename );
 @unlink ( $_FILES [$inputname] ['tmp_name'] );
 return $filename;
}

以上范例中 $_FILES 數組的內容如下所示。我們假設文件上傳字段的名稱為 userfile(名稱可隨意命名)
如何上傳多個文件?比如同時上傳3個文件

只需將

 代碼如下 復制代碼


<input name="userfile" type="file">
改成

<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">

對應的在調用此函數時,$_FILES['userfile']['name'][0],代表第一個文件的相關文件信息,依此類推,其他也一樣。

$_FILES['userfile']['name'] 客戶端機器文件的原名稱。
 $_FILES['userfile']['type'] 文件的 MIME 類型,需要浏覽器提供該信息的支持,例如“image/gif”。
 $_FILES['userfile']['size'] 已上傳文件的大小,單位為字節。
 $_FILES['userfile']['tmp_name'] 文件被上傳後在服務端儲存的臨時文件名。
 $_FILES['userfile']['error'] 和該文件上傳相關的錯誤代碼

值:0; 沒有錯誤發生,文件上傳成功。
 值:1; 上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值。
 值:2; 上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。
 值:3; 文件只有部分被上傳。
 值:4; 沒有文件被上傳。

上傳大文件失敗的解決辦法

文件上傳時存放文件的臨時目錄必須是開啟的並且是 PHP 進程所有者用戶可寫的目錄。如果未指定則 PHP 使用系統默認值。

max_execution_time = 90
file_uploads = On
upload_max_filesize = 2M 設定文件上傳的大小的最大值

copyright © 萬盛學電腦網 all rights reserved