最近一段时间对PHP文件处理方面很感兴趣,因此在许多站点上看了许多的文件处理的文章,但是国内许多的站点上的PHP文件处
理方面的知识大多数是你抄我的我抄你的,用baidu.com或者是google.com搜索出来的东西多是重复的。最近在国外一个站点上盾
了一篇文章感觉很不错,因此推荐给大家阅读。首先我们有必要说明一下文件上传的操作流程及用到的知识点:文件上传我们需
要用到HTML里面表单的type=file类型,及其enctype属性。这是我们大家必须要用的。当然了PHP函数库当中的FILE函数库,字符
串类型函数库,目录函数库及$_FILES[]的使用是我们必须要用到的。也许每一个站点都可能会对上传文件有许多的限制,这些限
制会包括 文件类型,文件大小,扩展名,以及上传目录的存在与否,上传文件的存在与否,目录的可写性,可读性,上传文件的
改名及怎样把文件从缓存当中复制到你所需要的目录当中。当然出错的预处理也是我们不容忽视的!如果再深一步的讨论我们还可
以对文件的操作起用事件日志的记录。下面我们通过一段程序来实现这些功
能:--------------------------------------------------------------------------------------------首先是我们预设的
变量值,它包括文件大小,文件扩展名类型,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
['HP_SELF']);$url_this = http://.$_SERVER['HTTP_HOST'].$_SERVER['HP_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
window.location.href='$url_this?message=deleted successfully'; }}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 window.location.href='$url_this?
message=$message';}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 .= .$file.; if ($DELETABLE) $filelist .= x; $filelist .= .date(d-m
H:i, filemtime($upload_dir.$file)) .; $filelist .=; }}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;}?> Upload File My Files
Developed By CityPost.ca
转自: http://edu.chinaz.com |