zoukankan      html  css  js  c++  java
  • PHP.20-图片上传下载

    图片上传下载

    思路:

      1、创建图片上传的存放目录

        /uploads/

      2、index.php  //浏览页面,提供上传表单 

    上传表单:文件上传必须使用enctype="multipart/form-data",且用post提交
    <form action="doupload.php" enctype="multipart/form-data" method="post">
    浏览图片
    <th>序号</th><th>图片</th><th>上传时间</th><th>操作</th>
    <?php
         //1、打开目录uploads
    $dir = "./uploads/";
    if(is_dir($dir)){      //is_dir:判断是否是一个目录
    $dh = opendir($dir);

        //2、遍历目录输出图片信息
    $i=0;
    while(false !== ($file = readdir($dh))){       //while ($file = readdir($handle)) 是错误的遍历方法
    if($file != "." && $file != ".."){            //列出当前目录的所有文件并去掉.和..
    $i++;

    echo "<td><img src='{$dir}{$file}' width='80' height='50'></td>";    //输出图片
    echo '<td>'.date("Y-m-d H:i:s", filectime($dir.$file)).'</td>';
    echo "<td><a href='{$dir}{$file}'>查看</a>&nbsp;
    <a href='download.php?name={$file}'>下载</a></td>";

      //3、关闭目录
    closedir();


      3、doupload.php  //图片上传

      //1、获取上传文件信息

    $upfile = $_FILES["pic"];
    $typelist = array("image/jpeg", "image/png", "image/gif");      //定义允许的类型
    $path = "./uploads/";      //定义上传后的目录

      //2、过滤上传文件错误号
    if($upfile["error"] > 0){
    switch ($upfile["error"]){    //error:1、2、3、4、6、7

      //3、本次上传大小过滤
    if($upfile['size'] > 2000000){

      //4、类型过滤
    if(!in_array($upfile["type"], $typelist)){

      //5、上传文件重命名(随机获取一个文件名,保留后缀名)
    $fileinfo = pathinfo($upfile["name"]);    //pathinfo:解析上传文件名字
    do{
      $newfile = date("Y-m-d").rand(1000, 9999).".".$fileinfo["extension"];
    }while(
      file_exists($path.$newfile)
    );


      //6、执行文件上传
    if(is_uploaded_file($upfile["tmp_name"])){    //判断是否是一个上传文件

    if(move_uploaded_file($upfile["tmp_name"], $path.$newfile)){  //移动上传文件

      4、download.php  //图片下载功能

      //1、获取要下载的图片名(加上路径)
    $file = "./uploads/".$_GET["name"];
      //2、重设响应类型
    $info = getimagesize($file);      //获得图像大小
      //3、指定下载的文件名
    header("Content-Disposition:attachment;filename=".$_GET["name"]);
      //4、制定文件的大小
    header("Content-length:".filesize($file));
      //5、响应内容
    readfile($file);      //输出一个文件

  • 相关阅读:
    Python爬虫-05:Ajax加载的动态页面内容
    Python爬虫-04:贴吧爬虫以及GET和POST的区别
    Python-爬虫03:urllib.request模块的使用
    Python Numpy-基础教程
    8皇后算法
    迷宫算法
    归并排序
    查找算法
    排序算法
    设计模式
  • 原文地址:https://www.cnblogs.com/zixuanfy/p/6721672.html
Copyright © 2011-2022 走看看