自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PHP實現(xiàn)文件上傳的思路及實例

開發(fā) 后端
使用PHP實現(xiàn)文字上傳首選要了解PHP函數(shù)庫當中的FILE函數(shù)庫,字符串類型函數(shù)庫,目錄函數(shù)庫及$_FILES[]的使用是我們必須要用到的。

51CTO推薦:PHP+MySQL視頻教程

文件上傳我們需要用到HTML里面表單的type=file類型,及其enctype屬性。這是我們大家必須要用的。當然了PHP函數(shù)庫當中的FILE函數(shù)庫,字符串類型函數(shù)庫,目錄函數(shù)庫及$_FILES[]的使用是我們必須要用到的。

也許每一個站點都可能會對上傳文件有許多的限制,這些限制會包括 文件類型,文件大小,擴展名,以及上傳目錄的存在與否,上傳文件的存在與否,目錄的可寫性,可讀性,上傳文件的改名及怎樣把文件從緩存當中復制到你所需要的目錄當中。

當然出錯的預處理也是我們不容忽視的!如果再深一步的討論我們還可以對文件的操作起用事件日志的記錄。

下面我們通過一段程序來實現(xiàn)這些功能:
  
首先是我們預設的變量值,它包括文件大小,文件擴展名類型,MIMI類型,及是否刪除的開關變量

$MAX_SIZE = 2000000;
$FILE_MIMES = array('image/jpeg','image/jpg','image/gif'
,'image/png','application/msword');

$FILE_EXTS = array('.zip','.jpg','.png','.gif'); 

$DELETABLE = true;

下一部就是設置瀏覽器訪問變量及目錄訪問變量:

$site_name = $_SERVER['HTTP_HOST'];
$url_dir = http://.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
$url_this = http://.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];

$upload_dir = files/;
$upload_url = $url_dir./files/;
$message =;

建立上傳目錄并相應改變權限:

if (!is_dir(files)) {
 if (!mkdir($upload_dir))
  die (upload_files directory doesn't exist and creation failed);
 if (!chmod($upload_dir,0755))
  die (change permission to 755 failed.);
}

用戶請求的處理:

if ($_REQUEST[del] && $DELETABLE) {
 $resource = fopen(log.txt,a);
 fwrite($resource,date(Ymd h:i:s).DELETE - $_SERVER[REMOTE_ADDR].$_REQUEST[del]\\n);
 fclose($resource);

 if (strpos($_REQUEST[del],/.)﹥0); //possible hacking
 else if (strpos($_REQUEST[del],files/) === false); //possible hacking
 else if (substr($_REQUEST[del],0,6)==files/) {
  unlink($_REQUEST[del]);
  print ﹤script﹥window.location.href='$url_this?message=deleted successfully'﹤/script﹥;
 }
}
else if ($_FILES['userfile']) {
 $resource = fopen(log.txt,a);
 fwrite($resource,date(Ymd h:i:s).UPLOAD - $_SERVER[REMOTE_ADDR]
 .$_FILES['userfile']['name']. 
 .$_FILES['userfile']['type'].\\n);
 fclose($resource);

 $file_type = $_FILES['userfile']['type']; 
 $file_name = $_FILES['userfile']['name'];
 $file_ext = strtolower(substr($file_name,strrpos($file_name,.)));

 //文件大小的檢查:

 if ( $_FILES['userfile']['size'] ﹥ $MAX_SIZE) 
  $message = The file size is over 2MB.;
  //File Type/Extension Check
 else if (!in_array($file_type, $FILE_MIMES) 
&& !in_array($file_ext, $FILE_EXTS) )
  $message = Sorry, $file_name($file_type) is not allowed to be uploaded.;
 else
  $message = do_upload($upload_dir, $upload_url);

 print ﹤script﹥window.location.href='$url_this?message=$message'﹤/script﹥;
}
else if (!$_FILES['userfile']);
else 
$message = Invalid File Specified.;

  列出我們上傳的文件:

$handle=opendir($upload_dir);
$filelist = ;
while ($file = readdir($handle)) {
 if(!is_dir($file) && !is_link($file)) {
  $filelist .= ﹤a href='$upload_dir$file'﹥.$file.﹤/a﹥;
 if ($DELETABLE)
  $filelist .= ﹤a href='?del=$upload_dir$file' title='delete'﹥x﹤/a﹥;
  $filelist .= ﹤sub﹥﹤small﹥﹤small﹥﹤font color=grey﹥ .date(d-m H:i, filemtime($upload_dir.$file))
.﹤/font﹥﹤/small﹥﹤/small﹥﹤/sub﹥;
  $filelist .=﹤br﹥;
 }
}

function do_upload($upload_dir, $upload_url) {

 $temp_name = $_FILES['userfile']['tmp_name'];
 $file_name = $_FILES['userfile']['name']; 
 $file_name = str_replace(\\\\,,$file_name);
 $file_name = str_replace(',,$file_name);
 $file_path = $upload_dir.$file_name;

 //File Name Check
 if ( $file_name ==) { 
  $message = Invalid File Name Specified;
  return $message;
 }

 $result = move_uploaded_file($temp_name, $file_path);
 if (!chmod($file_path,0777))
  $message = change permission to 777 failed.;
 else
  $message = ($result)?$file_name uploaded successfully. :
 Somthing is wrong with uploading a file.;
 return $message;
}

?﹥

﹤center﹥
﹤font color=red﹥﹤?=$_REQUEST[message]?﹥﹤/font﹥
﹤br﹥
﹤form name=upload id=upload ENCTYPE=multipart/form-data method=post﹥
Upload File ﹤input type=file id=userfile name=userfile﹥
﹤input type=submit name=upload value=Upload﹥
﹤/form﹥

﹤br﹥﹤b﹥My Files﹤/b﹥
﹤hr width=70%﹥
﹤?=$filelist?﹥
﹤hr width=70%﹥
﹤small﹥﹤sup﹥Developed By 
﹤a style=text-decoration:none href=http://tech.citypost.ca﹥CityPost.ca﹤/a﹥
﹤/sup﹥﹤/small﹥
﹤/center﹥

【編輯推薦】

  1. 開發(fā)老手談Windows平臺的PHP應用開發(fā)
  2. PHP 5.3閉包語法初探
  3. 精通PHP需要注意的十大要點
責任編輯:佚名 來源: 網(wǎng)絡轉載
相關推薦

2009-11-16 10:40:02

PHP上傳文件代碼

2009-11-16 10:25:40

PHP上傳文件

2009-11-24 13:15:35

Zend框架PHP上傳文件

2009-11-16 10:16:24

PHP文件上傳

2009-11-16 12:17:46

PHP上傳文件類型

2009-11-24 15:23:50

PHP文件上傳進度條

2009-06-08 16:44:00

Struts2文件上傳

2015-03-03 13:15:19

ASP.NET大文件下載實現(xiàn)思路

2009-11-16 14:15:51

PHP上傳多個文件

2011-05-17 10:10:15

MySQLmysqld

2009-11-16 13:04:04

PHP上傳文件代碼

2009-11-16 14:09:30

PHP上傳類

2014-03-28 09:35:11

MongoDBSharding

2024-06-17 09:02:01

2009-11-24 15:01:59

PHP通用文件上傳類

2009-11-16 09:35:42

PHP上傳

2009-11-16 11:41:19

PHP上傳大文件

2009-11-16 10:49:43

PHP上傳文件代碼

2009-11-24 14:45:08

PHP批量上傳圖片

2009-11-16 14:38:36

PHP上傳文件代碼
點贊
收藏

51CTO技術棧公眾號