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

2016-01-29 13:08 8 1 收藏

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

【 tulaoshi.com - 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['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 "<scriptwindow.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,str

来源:http://www.tulaoshi.com/n/20160129/1489032.html

延伸阅读
标签: Web开发
$ftp_server = "*.*.*.*"; $ftp_user = "lu"; $ftp_pass = "love you"; // set up a connection or die $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); $login_result = ftp_login($conn_id, $ftp_user, $ftp_pass); if ((!$conn_id) || (!$login_result)) {       &nbs...
标签: Web开发
代码如下: -----------------------------HTMLPage1.htm--------------------------------- html xmlns="http://www.w3.org/1999/xhtml" head title/title style type="text/css" table{ border:solid 1px #444; background-color:Aqua;} table td{border:solid 1px #444;} /style script src="js/Jquery1.7.js" type="text/javascri...
标签: Web开发
这个插件支持多个文件选取功能,很不错,而且代码简单 代码如下: $("#fileUpload").fileUpload({ 'uploader': 'style/uploader.swf', 'cancelImg': 'style/img/cancel.png', 'folder': '/mbs/fileUpload', 'script': '/mbs/FileUpload', 'buttonText': 'Durchsuchen', 'fileDesc': '*.jpg;*.gif;*.png', 'fileExt': '*.jpg;*.gif;*.p...
标签: Web开发
可以读/etc/passwd! 这段。。 [文件上载] PHP自动支持基于RFC 1867的文件上载,我们看下面的例子: FORM METHOD="POST" ENCTYPE="multipart/form-data" INPUT TYPE="FILE" NAME="hello" INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="10240" INPUT TYPE="SUBMIT" /FORM 上面的代码让用户从本地机器选择一个文件,当点击提交后...
标签: Web开发
根据许多网友需求,特地把我站的这个模拟 OICQ 的在线聊天的东西献给大家! 1 用户必须注册登陆,在数据库 userinfo 里面保存如下几个字段 Name 不用问了,这是登陆用的用户名,必须唯一 Password 登陆密码 NickName 用户昵称,也就是显示的名字 Face 存放着用户头像的编号,比如 01,代表 /images/face/01.gif ...

经验教程

83

收藏

67
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部