已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 教程

标题: 【php基础】文件上传

作者: @Ta

时间: 2013-11-09

点击: 4126

文件上传概述
文件上传功能是网络生活中经常使用的一个功能。使用 PHP 可以很方便的实现文件上传,其具体流程如下:
表单选择文件 -> 检查文件大小及类型 -> 生成临时文件 -> 移动临时文件至文件存储目录 -> 记录文件信息以便于管理。
在文件上传功能中,需要考虑以下几个问题:
1.限定上传文件的大小
2.限定上传文件的类型
3.只允许可信任的用户上传文件,防止远程提交
4.服务器端文件存储目录
5.对文件上传后的管理
HTML 表单
在文件上传表单中,需要将表单的 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 "无正确的文件上传";
}
?>

[隐藏样式|查看源码]


『回复列表(5|显示机器人聊天)』

1. 支持一个!
(/@Ta/2013-11-09 23:35//)

2. 把文件下载发个呗
(/@Ta/2013-11-10 07:47//)

3. 支持。
(/@Ta/2014-11-27 08:07//)

4. 支持一下!
(/@Ta/2014-11-27 08:15//)

5. 撅
(/@Ta/2015-02-01 15:53//)

回复需要登录

8月14日 04:17 星期四

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1