forget and forget

          能吃能睡是福;能忘是大福......

          posts - 39, comments - 26, trackbacks - 0, articles - 10
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          php上傳單個文件

          Posted on 2006-06-08 22:09 橘子 閱讀(1032) 評論(0)  編輯  收藏 所屬分類: WEB開發

          ??? PHP上傳文件的問題:
          一:1、上傳單個文件的時候。在表單頁面設置文件輸入域,<input name="userfile" type="file" />然后表單要加入<form enctype="multipart/form-data" action="post.php" method="post">這個屬性,這是告訴瀏覽器我要上傳文件的屬性,一定要加上。
          ??? 2、設置好了表單,接下來的事就是讀取表單的變量,如果你還定義了其他的變量,那么php使用$_POST來讀出,如:$uservar=$_POST["uservar"],然而文件是存在$_FILES中,具體見下面:
          ?
          ? * $_FILES['userfile']['name'] 客戶端機器文件的原名稱。
          ? ?* $_FILES['userfile']['type'] 文件的 MIME 類型,需要瀏覽器提供該信息的支持,例如“image/gif”。
          ? ?* $_FILES['userfile']['size'] 已上傳文件的大小,單位為字節。
          ? ?* $_FILES['userfile']['tmp_name'] 文件被上傳后在服務端儲存的臨時文件名。
          ? ?* $_FILES['userfile']['error'] 和該文件上傳相關的錯誤代碼

          ? 1. 值:0; 沒有錯誤發生,文件上傳成功。
          ? 2. 值:1; 上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值。
          ? 3. 值:2; 上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。
          ? 4. 值:3; 文件只有部分被上傳。
          ? 5. 值:4; 沒有文件被上傳。
          3、完成上傳過程。示例代碼:
          (1)
          <?php
          $upload_file=$_FILES['userfile']['tmp_name'];
          $upload_file_name=$_FILES['userfile']['name'];
          if($upload_file){
          ?$file_size_max = 20000000;// 1M限制文件上傳最大容量(bytes)
          ?$store_dir = "attfile/";// 上傳文件的儲存位置
          ?$accept_overwrite = 1;//是否允許覆蓋相同文件
          ?// 檢查文件大小
          ?if ($upload_file_size > $file_size_max) {
          ??echo "對不起,你的文件容量大于規定";
          ??exit;
          ?}
          ?// 檢查讀寫文件
          ?if (file_exists($store_dir . $upload_file_name) && !$accept_overwrite) {
          ??echo?? "存在相同文件名的文件";
          ??exit;
          ?}
          ?//復制文件到指定目錄
          ?if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) {
          ??echo "復制文件失敗";
          ??exit;
          ?}
          }
          echo?? "<p>你上傳了文件:";
          echo $_FILES['userfile']['name'];
          echo "<br>";
          //客戶端機器文件的原名稱。
          Echo?? "文件的 MIME 類型為:";
          echo $_FILES['userfile']['type'];
          //文件的 MIME 類型,需要瀏覽器提供該信息的支持,例如“image/gif”。
          echo "<br>";

          Echo?? "上傳文件大小:";
          echo $_FILES['userfile']['size'];
          //已上傳文件的大小,單位為字節。
          echo "<br>";

          Echo?? "文件上傳后被臨時儲存為:";
          echo $_FILES['userfile']['tmp_name'];
          //文件被上傳后在服務端儲存的臨時文件名。
          echo "<br>";

          $Erroe=$_FILES['userfile']['error'];
          switch($Erroe){
          ?case 0:
          ?Echo?? "上傳成功"; break;
          ?case 1:
          ?Echo?? "上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值."; break;
          ?case 2:
          ?Echo?? "上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。";?? break;
          ?case 3:
          ?Echo?? "文件只有部分被上傳";break;
          ?case 4:
          ?Echo?? "沒有文件被上傳";break;
          }
          ?>
          (2)<?php
          $uploaddir= '../attfile/';//設置上傳的文件夾地址
          $FILES_EXT=array('.gif','.jpg','.bmp');//設置允許上傳文件的類型
          $MAX_SIZE = 20000000;//設置文件上傳限制20000000byte=2M
          for ($i=0;$i<count($userfile);$i++){
          ?$FILES_NAME=$_FILES['userfile']['name'][$i];//客戶端文件名
          }
          //echo $FILES_NAME;
          //取出文件后綴名,strrpos()從標記開始前字節個數(不算標記),substr()顯示從第strrpos()之后的字符
          $file_ext=substr($FILES_NAME,strrpos($FILES_NAME,"."));
          //echo $file_ext;
          //檢查文件大小
          if($_FILES['userfile']['size']>$MAX_SIZE){
          ?echo "文件大小超程序允許范圍!";
          ?exit;
          }
          //檢查文件類型
          if(in_array($file_ext, $FILES_EXT)){
          ?$_FILES['userfile']['name']=date("YmdHis").rand().$file_ext;
          ?$uploadfile = $uploaddir.$_FILES['userfile']['name'];//上傳后文件的路徑及文件名
          ?//將上傳后的路徑寫入到數據庫中

          ?//用move函數生成臨時文件名,并按照 $_FILES['userfile']['name']上傳到$uploaddir下
          ?if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
          ??print "\n上傳成功!";
          ?} else {
          ??print "上傳錯誤!? 以下是上傳的信息:\n";
          ??print_r($_FILES);
          ?}
          }
          else{
          ?echo "{$file_ext}不是允許上傳的文件類型!";
          ?exit;
          }
          ?>



          小技巧>>1、當在提交時,希望確認是否要提交可以在<form>里如這樣加入:<form onsubmit="return confirm('你真的要提交嗎?')">
          2、在php里希望返回時所有在文本框里的東西都保留可以這樣:<a href=javascript:history.back(1)>重新來過</a>。

          主站蜘蛛池模板: 缙云县| 巴南区| 尖扎县| 阜南县| 华池县| 古交市| 吉安县| 平利县| 汉中市| 刚察县| 和龙市| 德州市| 马鞍山市| 安达市| 鹤岗市| 永仁县| 屏山县| 团风县| 涞源县| 东兴市| 泗阳县| 台中县| 利川市| 屯门区| 仙桃市| 博白县| 平乡县| 古丈县| 科技| 象山县| 黄石市| 陕西省| 中超| 桦甸市| 扬州市| 甘南县| 台北市| 沧源| 阆中市| 南丹县| 福安市|