zoukankan      html  css  js  c++  java
  • 超简单 文件上传,下载

    主要用到函数

    opendir — 打开目录句柄
    readdir — 从目录句柄中读取条目
    closedir — 关闭目录句柄
    filectime — 取得文件的 inode 修改时间
    in_array — 检查数组中是否存在某个值
    pathinfo — 返回文件路径的信息
    file_exists — 检查文件或目录是否存在
    is_uploaded_file — 判断文件是否是通过 HTTP POST 上传的
    move_uploaded_file — 将上传的文件移动到新位置
    getimagesize — 取得图像信息,大小
    readfile — 输出一个文件

    //2.重设响应类型
    header('Content-type:'.$fileInfo['mime']);
    //3.执行下载的文件名
    header('Content-Disposition:attachment; filename='.$_GET['name']);
    //4.指定文件大小
    header('Content-Length:'.  filesize($file));

    文件介绍

    index.php主要遍历文件列表信息, 上传单表

    doupload.php 主要处理文件上传

    download.php 主要处理文件下载

    index.php

    <html>
        <head>
            <title>图片上传和下载示例</title>
        </head>
        <body>
            <h2>图片上传和下载示例</h2>
            <form action="doupload.php" method="post" enctype="multipart/form-data" >
                上传图片:<input type="file" name="pic" />
                <input type="submit" value="上传" />
            </form>
    
            <table width="500" border="0">
                <tr align="left" bgcolor="#ccc">
                    <th>序号</th>
                    <th>图片</th>
                    <th>创建时间</th>
                    <th>操作</th>
                </tr>
                <?php
                //打开目录 
                $dir = opendir("./uploads");
                //遍历目录
                $i = 0;
                while ($f = readdir($dir)) {
                    if ($f != '.' && $f != '..') {
                        $i++;
                        echo '<tr>';
                        echo '<td>' . $i . '</td>';
                        echo '<td><img src="./uploads/' . $f . '" width=80 height=50 /></td>';
                        echo '<td>' . date('Y-m-d H:i:s', filectime('./uploads/' . $f)) . '</td>';
                        echo '<td><a href="./uploads/' . $f . '">查看</a> <a href="download.php?name=' . $f . '">下载</a></td>';
                        echo '</tr>';
                    }
                }
                //关闭目录
                closedir($dir);
                ?>
                <tr align="left" bgcolor="#ccc">
                    <td colspan="4"> </td>
                </tr>
            </table>
        </body>
    </html>
    

    doupload.php

    <?php
    	//1 获取文件信息
    	$upfile = $_FILES['pic'];
    	$typeList = array('image/jpg', 'image/jpeg', 'image/gif', 'image/png');
        $path = './uploads/';
        $maxFileSize = 1024000;
    	
    	//2过滤上传文件的错误号
    	if ($upfile['error'] > 0) {
            switch ($upfile['error']) {
                case 1 :
                    $info = '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。 ';
                    break;
                case 2 :
                    $info = '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。  ';
                    break;
                case 3 :
                    $info = '文件只有部分被上传 ';
                    break;
                case 4 :
                    $info = '没有文件被上传 ';
                    break;
                case 6 :
                    $info = '找不到临时文件夹';
                    break;
                case 7 :
                    $info = '文件写入失败。';
                    break;
            }
        }
    	//3上传文件大小过滤
        if ($upfile['size'] > $maxFileSize){
            die('上传文件超出限制');
        }
    	
    	//4文件类型过滤
    	if (!in_array($upfile['type'], $typeList)){
            die('上传文件类型不允许'.$upfile['type']);
        }
        
    	//5上传后的文件名定义
    	$pathinfo = pathinfo($upfile['name']);
        do{
            $newFile = date('YmdHis').  rand(1000, 9999).'.'.$pathinfo['extension'];
        } while (file_exists($path.$newFile));
    	//6执行上传文件
        if (is_uploaded_file($upfile['tmp_name'])){     //判断文件是否是通过 HTTP POST 上传的
            if (move_uploaded_file($upfile['tmp_name'], $path.$newFile)){
                echo '上传文件成功';
                echo '<h3><a href="index.php">返回</a></h3>';
            } else {
                die('上传文件失败');
            }
        } else {
            die('这不是一个上传文件');
        }
    	
    ?>
    

    download.php

    <?php
    //执行文件下载
    
    //1.获取要下载的图片名
    $file = './uploads/'.$_GET['name'];
    //2.重设响应类型
    $fileInfo = getimagesize($file);
    header('Content-type:'.$fileInfo['mime']);
    //3.执行下载的文件名
    header('Content-Disposition:attachment; filename='.$_GET['name']);
    //4.指定文件大小
    header('Content-Length:'.  filesize($file));
    //5.响应内容
    readfile($file);
    ?>
    
    前望
  • 相关阅读:
    css3 font-face
    快速理解RequireJs
    移动HTML5前端性能优化指南
    HTML中head头结构
    JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模)
    巧妙使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的好方法
    关于浏览器内核与javascript引擎的一些小知识
    SVG 与 Canvas:如何选择
    NodeJS、NPM安装配置步骤(windows版本)
    ie10 css hack 条件注释等兼容方式整理
  • 原文地址:https://www.cnblogs.com/ybbqg/p/2496749.html
Copyright © 2011-2022 走看看