国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

用PHP3實現文件上載

2024-05-04 23:02:09
字體:
來源:轉載
供稿:網友

 

php3是一種非常強大的cgi腳本語言,就其語言特點基本上源于c,就其實現方式而言更perl,而其對數據庫的內在支持更使之成為asp的強大對手。
  
  
  首先在前臺必須有一個界面
  
  < html >
  < head >
  < title >
文件上載界面< /title >
  < /head >
  < body >< table >< center >
  < form enctype = "multipart/form-data" name = "submitform"
  action = "upload.php3" method = "post" >
  < input type = "hidden" name =
  "max_file_size" value ="1000000" >
  < tr >
  < td >< input name = "uploadfile"
  type = "file" size = "30" >< /td >
  < /tr >
  < tr >
  < td >< input name = "submit" value =
  "
提交" type = "submit" >< /td >
  < td >< input name = "reset" value =
  "
重置" type = "reset" >< /td >
  < /tr >
  < /form >< /center >< /table >< /body >
  < /html >
  
  
  值得注意的是一個 max_file_size 的隱藏值域,通過設置其value 可以限制上載文件的大小。
  
  然后在后臺實現文件上載操作。如果只是最基本的上載,寥寥幾行就可以搞定
  
  < ?
  if($uploadfile != "none")
  {
  copy($uploadfile,"$uploadfile_name");
  unlink($uploadfile);
  }
  else
  {
  echo "
你沒有選擇任何文件上載!";
  }
  ? >
  
  
  因為form傳遞過來的值自動賦值給同名變量,所以直接通過$uploadfile可以訪問上載的文件,但由于這是一個保存文件的變量,因此文件名字必須通過另外一個$uploadfile_name變量取得。在拷貝文件后刪去臨時文件(unlink)。
  
  
  上面的代碼完全可以工作,但實際應用中漏洞百出,讓我們逐步來完善之
  
  
  首先,上載的文件必須有一個固定的目錄保存,我們在這里用一個$uploadpath 變量保存之,如
  
  $uploadpath = "/home/flier/upload/";
  
  
或復雜一點的自動定位,如
  
  $uploadpath = addslashes(dirname
  ($path_translated))."http://upload//";
  $path_translated
顧名思義是當前傳送目錄,
  
  
我們假定以其一名為upload的子目錄來保存上載的文件。dirname函數返回其目錄名,然后加上子目錄名
  
然后用一個變量$filename保存完整的上載后文件名和路徑$filename = $uploadpath.$uploadfile_name;
  
  
  其次,我們還想讓用戶得知上載文件的簡要信息,如上載文件的大小
  if($uploadfile_size < 1024)
  //
載文件大小
  {
  $filesize = (string)$uploadfile_size . "
字節";
  }
  elseif($uploadfile_size < (1024 * 1024))
  {
  $filesize = number_format((double)
  ($uploadfile_size / 1024), 1) . " kb";
  }
  else
  {
  $filesize = number_format((double)
  ($uploadfile_size / (1024 * 1024)), 1) . " mb";
  }
  
  
  number_format函數起到格式化輸出的作用,具體用法請參照手冊
  
  
  下一步我們必須考慮到文件已經存在和拷貝操作失敗的情況,并提供相應的提示信息
  
  if(!file_exists($filename))
  {
  if(copy($uploadfile,$filename))
  {
  echo "
文件 $uploadfile_name
  ($filesize)
上載成功!";
  }
  else
  {
  echo "
文件 $uploadfile_name 上載失敗!";
  }
  unlink($uploadfile);
  }
  else
  {
  echo "
文件 $uploadfile_name 已經存在!";
  }
  
  
  然后我們應該考慮到大文件上載時容易出現超時的情況,可以用set_time_limit($timelimit); 加大超時限制時間。
  
  最后,把截面和實現代碼綜合到一個單獨的文件中,為了實現這個想法,我們通過在 form中添加一個隱含值< input type = "hidden" name = "uploadaction" value = "1" > 指出當前的狀態(界面或實現),以便區分對待 完成代碼如下(文件名upload.php3
  
  < ?
  if(!$uploadaction):
  ? >
  < html >
  < head >
  < title >
文件上載界面< /title >
  < /head >
  < body >< table >< center >
  < form enctype = "multipart/form-data" name =
  "submitform" action = "upload.php3" method = "post" >
  < input type = "hidden" name =
  "max_file_size" value ="1000000" >
  < input type = "hidden" name = "uploadaction" value = "1" >
  < tr >
  < td >< input name = "uploadfile" type =
  "file" size = "30" >< /td >
  < /tr >
  < tr >
  < td >< input name = "submit" value =
  "
提交" type = "submit" >< /td >
  < td >< input name = "reset" value =
  "
重置" type = "reset" >< /td >
  < /tr >
  < /form >< /center >< /table >< /body >
  < /html >
  < ?
  else:
  ? >
  < html >
  < head >
  < title >
文件上載代碼< /title >
  < /head >
  < body >
  < ?
  $uploadaction=0;
  
  $timelimit=60; /*
設置超時限制時間
  
缺省時間為 30
  
設置為0時為不限時 */
  set_time_limit($timelimit);
  
  if(($uploadfile != "none")&&
  ($uploadfile != ""))
  {
  $uploadpath = addslashes(dirname
  ($path_translated))."http://upload//"; //
載文件存放路徑
  $filename = $uploadpath.$uploadfile_name;
  //
上載文件名
  if($uploadfile_size < 1024)
  //
載文件大小
  {
  $filesize = (string)$uploadfile_size . "
字節";
  }
  elseif($uploadfile_size < (1024 * 1024))
  {
  $filesize = number_format((double)
  ($uploadfile_size / 1024), 1) . " kb";
  }
  else
  {
  $filesize = number_format((double)
  ($uploadfile_size / (1024 * 1024)), 1) . " mb";
  }
  
  if(!file_exists($filename))
  {
  if(copy($uploadfile,$filename))
  {
  echo "
文件 $uploadfile_name ($filesize)上載成功!";
  }
  else
  {
  echo "
文件 $uploadfile_name 上載失敗!";
  }
  unlink($uploadfile);
  }
  else
  {
  echo "
文件 $uploadfile_name 已經存在!";
  }
  }
  else
  {
  echo "
你沒有選擇任何文件上載!";
  }
  
  set_time_limit(30); //
恢復缺省超時設置
  ? >
  < br >< a href = "upload.php3" >
返回< /a >
  < /body >
  < /html >
  < ?
  endif;
  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 松滋市| 措美县| 沙坪坝区| 甘谷县| 梨树县| 宜章县| 柳河县| 桃江县| 晋城| 乐平市| 桦南县| 许昌市| 宁乡县| 大方县| 成武县| 百色市| 乳源| 重庆市| 乐东| 焦作市| 介休市| 孟津县| 青神县| 星座| 民权县| 崇州市| 沙雅县| 永和县| 巢湖市| 安龙县| 南丹县| 青州市| 思茅市| 叶城县| 苍梧县| 齐齐哈尔市| 青神县| 兰坪| 泰和县| 赤水市| 兴安县|