码迷,mamicode.com
首页 > Web开发 > 详细

PHP -- 上传文件

时间:2015-08-03 01:00:55      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

PHP – 上传文件

PHP – 上传文件

/etc/php.ini 配置文件的信息

file_uploads = on
upload_max_filesize = 100m       # 允许上传文件大小的最大值
post_max_size = 100M             # 指通过表单 POST 给 PHP 的所能接收的最大值
upload_tmp_dir = /tmp            # 临时文件目录
max_file_uploads = 20            # 最大文件数目
max_execution_time = 600         # 每个 PHP 页面运行的最大时间值 (秒)
memory_limit = 128M              # 每个 PHP 页面所吃掉的最大内存
max_input_time = 60              # 数据允许的最大时间 (秒)
max_input_nesting_level = 60     # 输入变量的嵌套深度

error 值

0 表示 ok
1 上传的文件大小超过了 upload_max_filesize
2 超过 MAX_FILE_SIZE   #  <input type="hidden" name="MAX_FILE_SIZE" value="30000">
3 文件只有一部分被上传
4 文件没有被上传
6 没有找到临时目录
7 文件写入失败 (可能是权限问题)
8 被 php 扩展中断

上传文件

<form action="doAction.php" method="post" enctype="multipart/form-data">
   <input type="file" name="myfile"><br/>
   <input type="submit" value="upload file">
</form>
$filename = $_FILES[‘myfile‘][‘name‘];
$type     = $_FILES[‘myfile‘][‘type‘];
$tmp_name = $_FILES[‘myfile‘][‘tmp_name‘];
$size     = $_FILES[‘myfile‘][‘size‘];
$error    = $_FILES[‘myfile‘][‘error‘];

$destination = dirname(__FILE__).‘/upload/‘.$filename;
move_uploaded_file($tmp_name, $destination);

上传多个文件

<form action="doAction.php" method="post" enctype="multipart/form-data">
   <input type="file" name="myfile[]"><br/>
   <input type="file" name="myfile[]"><br/>
   <input type="submit" value="upload file">
</form>
foreach ($myfile as $file) {
    $filename = $_FILES[‘file‘][‘name‘];
    $type     = $_FILES[‘file‘][‘type‘];
    $tmp_name = $_FILES[‘file‘][‘tmp_name‘];
    $size     = $_FILES[‘file‘][‘size‘];
    $error    = $_FILES[‘file‘][‘error‘];
}
...

判断文件是否是 post 上来的

if (!is_uploaded_file($tmp_name)) {
    exit("文件不是由 HTTP POST 方式上传的");
}

设置允许的文件类型

  1. 通过表单
    <input type="file" name="myfile" accept="MIME_TYPE" />
    MIME_TYPE:
      image/jpeg,image/png,image/gif...
    
  2. 通过 php 验证
    获取后缀名:
    $ext = strtolower(end(explode(‘.‘, $filename)));
    $ext = pathinfo($filename)[‘extension‘];
    
    $arrExt = [‘jpeg‘, ‘png‘, ‘gif‘];
    if (! in_array($ext, $arrExt)) {
       exit("非法文件类型");
    }
    
  3. 验证是否是真正的图片
    if (!getimagesize($tmp_name)) {
        exit("不是真正的图片");
    }
    

PHP -- 上传文件

标签:

原文地址:http://www.cnblogs.com/sunznx/p/4697101.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!