php文件上传

来源:互联网 发布:什么叫大数据思维 编辑:程序博客网 时间:2024/05/29 17:30

文件上传是网络生活中经常使用的一个功能。使用PHP可以很方便的实现文件上传。

流程:

表单选择文件 -》检查文件大小及类型-》生成临时文件-》移动临时文件夹以及文件存储目录-》记录文件以便于管理。

在文件上传功能中,需要考虑一下几个问题

1 .限定上传文件的大小

2.限定上传文件的类型

3.只允许可信任的用户上传文件,防止远程提交

4.服务器端文件存储目录

5.对文件上传后的管理

在文件上传表单中,需要将表单ENCTYPE属性设置为multipart/form-data;

<form enctype="multipart/form-data" action="upload.php" method="post">

<label for="file">请选择上传的文件</label>

<input type="file" name="file" size="40">

<br/>

<input type="submit" name="submit" value="确定">

</form>

在 <input> 标签里, type="file" 表示应该把输入作为文件来处理,这时候会出现选择文件的浏览按钮,点击该按钮即可选择本地电脑里的文件。

PHP 文件上传处理

PHP 提供了内置变量 $_FILES 来处理上传的文件。

$_FILES 变量说明(设定表单 name 属性为 file ):$_FILES 变量说明$_FILES["file"]["name"]客户端提交文件的原名称$_FILES["file"]["type"]浏览器提供的文件的 MIME 类型,如 gif 图片为 image/gif 。不过此类型在 PHP 端并不检查,因此不要想当然认为有这个值$_FILES["file"]["size"]已上传文件的大小,单位为字节$_FILES["file"]["tmp_name"]文件被上传后在服务端储存的临时文件名$_FILES["file"]["error"]和该文件上传相关的错误代码,为0则表示上传成功

当点击“确定”按钮提交表单至 upload.php 后,可以利用 $_FILES 变量来处理提交的文件。

文件处理例子:

<?php//文件存储路径$file_path="upload/";//664权限为文件属主和属组用户可读和写,其他用户只读。if(is_dir($file_path)!=TRUE) mkdir($file_path,0664) ;//定义允许上传的文件扩展名$ext_arr = array("gif", "jpg", "jpeg", "png", "bmp", "txt", "zip", "rar");if (empty($_FILES) === false) {    //判断检查    if($photo_up_size > 2097152){        exit("对不起,您上传的照片超过了2M。");    }    if($_FILES["file"]["error"] > 0){        exit("文件上传发生错误:".$_FILES["file"]["error"]);    }    //获得文件扩展名    $temp_arr = explode(".", $_FILES["file"]["name"]);    $file_ext = array_pop($temp_arr);    $file_ext = trim($file_ext);    $file_ext = strtolower($file_ext);    //检查扩展名    if (in_array($file_ext, $ext_arr) === false) {        exit("上传文件扩展名是不允许的扩展名。");    }    //以时间戳重命名文件    $new_name = time().".".$file_ext;    //将文件移动到存储目录下    move_uploaded_file($_FILES["file"]["tmp_name"],"$file_path" . $new_name);    //向数据表写入文件存储信息以便管理    //*********** 代码略 ***********//    echo "文件上传成功!";    exit;} else {    echo "无正确的文件上传";}?>

例子说明:

  1. 该例子只是简单演示了文件上传的流程,请勿直接用于实际项目
  2. 该例子中缺少对用户权限的检查
  3. 如果上传后的文件没有做重命名,则需要做文件重名时的逻辑处理
  4. 写入数据表文件信息由于涉及到数据库操作,暂略。写入数据表的信息应该包括文件上传的时间,上传的用户ID以及存储的位置,以便清理上传无效的文件以及文件过期管理等
  5. 无提交校验,要防止远程提交,可以在表单生成页面产生一个会话ID,然后在upload.php页面做校验以防止远程提交


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 房门对着电梯口怎么办 大门对着电梯门怎么办 房门和电梯对着怎么办 搬家与生肖相冲怎么办 颈椎生理曲度变直怎么办 整个背部长痘痘怎么办 卧室门对着厨房怎么办 卧室门正对厕所怎么办 进门正对厕所门怎么办 门口对着厕所门怎么办 厨房门比大门高怎么办 鼻子上山根横纹怎么办 墙与床的缝隙怎么办 床边与墙有间隙怎么办 抽了烟头晕恶心怎么办 9个月宝宝口臭怎么办 狗舔了人的伤口怎么办 狗舔了结痂伤口怎么办 狗狗指甲变黑了怎么办 狗狗不肯剪指甲怎么办 厕所门对厨房门怎么办 房间门对着镜子怎么办 门直对着楼梯口怎么办 厨房门对着客厅怎么办 卧室正对着马路怎么办 主卧厕所对着床怎么办 卧室门对着床头怎么办 主卧厕所门对床怎么办 老人晕车怎么办最有效方法 货车油刹不好用怎么办 7岁儿童喉咙有痰怎么办 3岁宝宝喉咙有痰怎么办 冰箱正对厨房门怎么办 买了连廊高层怎么办 想买电玩瑞文怎么办 财位旁边有窗户怎么办 入室门对卧室门怎么办 卧室门对着大门怎么办 床给别人睡过了怎么办 镜子对着书房门怎么办 次卧对着卫生间怎么办