程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP入門教程之上傳文件實例詳解

PHP入門教程之上傳文件實例詳解

編輯:PHP綜合

本文實例講述了PHP上傳文件的方法。分享給大家供大家參考,具體如下:

Demo1.php

<form enctype="multipart/form-data" action="Demo2.php" method="post">
  <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
  上傳文件: <input type="file" name="userfile" />
  <input type="submit" value="上傳" />
</form>

Demo2.php

<?php
  //接受上傳文件
  //$_FILES;
  //存在,但是空值
  //[userfile][name] 表示上傳的文件名
  //[userfile][type] 表示文件類型:例如,jpg 的文件類型為:image/jpeg
  //[userfile][tmp_name]表示上傳的文件臨時存放的位置 C:\WINDOWS\temp\php28.tmp
  //[userfile][error]表示錯誤類型,表示沒有任何錯誤。
  //[userfile][size]表示上傳文件的大小
  print_r($_FILES);
  echo '<br/>';
  //is_uploaded_file -- 判斷文件是否是通過 HTTP POST 上傳的
  //通過 HTTP POST 上傳後,文件會存放在臨時文件夾下
  $fileMimes = array('image/jpeg','image/pjpeg','image/gif','image/png','image/x-png');
  //判斷類型是否是數組裡的一種
  if(is_array($fileMimes)){
    if(!in_array($_FILES['userfile']['type'],$fileMimes)){
      echo "<script>alert('本站只允許 jpg,png,gif 圖片');history.back();</script>";
      exit;
    }
  }
  //創建一個常量
  define('URL',dirname(__FILE__).'\uploads');
  echo URL;
  //判斷目錄是否存在
  if(!is_dir(URL)){
    mkdir(URL,0777); //最大權限0777,意思是如果沒有這個目錄,那麼就創建
  }
  define('MAX_SIZE',2000000);
  if($_FILES['userfile']['size'] > MAX_SIZE){
    echo "<script>alert('上傳不得超過 2 M');history.back();</script>";
    exit;
  }
  //還有兩個問題要驗證
  //第二個問題,只允許 JPG 文件
// if($_FILES['userfile']['type'] != 'image/jpeg' && $_FILES['userfile']['type'] != 'image/pjpeg'){
//   echo "<script>alert('本站只允許 JPG 圖片');history.back();</script>";
//   exit ;
// }
// switch ($_FILES['userfile']['type']){
//   case 'image/jpeg'://火狐
//     break;
//   case 'image/pjpeg':
//     break;
//   case 'image/gif':
//     break;
//   case 'image/png'://火狐
//     break;
//   case 'image/x-png'://IE
//     break;
//   default: echo "<script>alert('本站只允許 jpg,png,gif 圖片');history.back();</script>";
//   exit ;
// }
  //第一個問題,如果上傳錯誤,怎麼辦
  if($_FILES['userfile']['error']>0){
    switch ($_FILES['userfile']['error']){
      case 1:echo "<script>alert('上傳文件超過約定值1');history.back();</script>";
      break;
      case 2:echo "<script>alert('上傳文件超過約定值2');history.back();</script>";
      break;
      case 3:echo "<script>alert('部分被上傳');history.back();</script>";
      break;
      case 4:echo "<script>alert('沒有被上傳');history.back();</script>";
      break;
    }
    exit;
  }
  if(is_uploaded_file($_FILES['userfile']['tmp_name'])){
    //就在這裡移動了
    //move_uploaded_file -- 將上傳的文件移動到新位置
    //第一個參數,寫上臨時文件的地址,
    //第二個參數,第二個參數要寫上你要存在的地址
    //先去判斷這個目錄是否存在
    //如果想屏蔽掉警告,直接加上 @
    if(!move_uploaded_file($_FILES['userfile']['tmp_name'],URL.'/'.$_FILES['userfile']['name'])){
      //如果移動失敗,就失敗
      echo '移動失敗';
      exit;
    }
  }else{
    echo "<script>alert('臨時文件夾找不到上傳的文件');history.back();</script>";
    exit;
  }
  //全部通過就上傳成功了
  //必須傳一個值給Demo3.php
  //文件上傳的地址
  echo "<script>alert('文件上傳成功');location.href='Demo3.php?url=".$_FILES['userfile']['name']."';</script>";
?>

Demo3.php

<?php
  $url = $_GET['url'];
  echo "<img src=\"uploads/".$url."\"/>";
?>

更多關於PHP相關內容感興趣的讀者可查看本站專題:《php文件操作總結》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php面向對象程序設計入門教程》、《PHP網絡編程技巧總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved