找回密码
 注册
【阿里云】2核2G云新老同享 99元/年,续费同价华为云精选云产品特惠做网站就用糖果主机Jtti,新加坡服务器,美国服务器,香港服务器
查看: 363|回复: 1

PHP文件上传的具体思路及实现

[复制链接]
发表于 2005 年 10 月 8 日 15:42:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
  最近一段时间对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
[&#39HP_SELF']);$url_this =  http://.$_SERVER['HTTP_HOST'].$_SERVER[&#39HP_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
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
 楼主| 发表于 2005 年 10 月 8 日 15:42:18 | 显示全部楼层
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价

PHP文件上传的具体思路及实现

  最近一段时间对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
[&#39HP_SELF']);$url_this =  http://.$_SERVER['HTTP_HOST'].$_SERVER[&#39HP_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
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|金光论坛

GMT+8, 2024 年 11 月 20 日 06:19 , Processed in 0.021896 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表