zoukankan      html  css  js  c++  java
  • PHP上传下载

    <?php
    
    
    //做限制判断上传的必须是普通图片类型文件而且文件大小必须小于1MB,不同类型文件$_FILES["file1"]["type"]值不同
    if ((($_FILES["file1"]["type"] == "image/gif") || ($_FILES["file1"]["type"] == "image/jpeg") || ($_FILES["file1"]["type"] == "image/pjpeg")) && ($_FILES["file1"]["size"] < 1048576)) {
        if ($_FILES["file1"]["error"] > 0) {
            //如果上传错误打印错误
            echo "error: " . $_FILES["file1"]["error"] . "<br />";
        } else {
            echo "name: " . $_FILES["file1"]["name"] . "<br />";
            echo "type: " . $_FILES["file1"]["type"] . "<br />";
            echo "size: " . $_FILES["file1"]["size"] . "<br />";
            echo "tmp_name: " . $_FILES["file1"]["tmp_name"] . "<br />";
    
            
            //重命名文件名,先获取扩展名
            //第一种方法
            $infoArr = pathinfo($_FILES["file1"]["name"]);
            $extension = $infoArr['extension'];
            //第二种方法
            $extension = pathinfo($_FILES["file1"]["name"], PATHINFO_EXTENSION);
            
            
            //以时间戳重命名文件名最后加扩展名
            $fileName = time() . '.' . $extension;
            
            if (file_exists("./upload/" . $fileName)) {
                //如果要保存的文件夹中有同名.扩展名的文件提示已存在该文件
                echo $fileName . " already exists. ";
            } else {
                //将上传的文件保存到我们指定的位置
                //move_uploaded_file函数第一个参数"临时副本的名称",第二个参数"要保存到的文件夹路径及文件名称.扩展名"
                move_uploaded_file($_FILES["file1"]["tmp_name"], "./upload/" . $fileName);
                echo "save: " . "./upload/" . $fileName;
            }
        }
    } else {
        //echo "Invalid file1";
    }
    /*
    $_FILES["file1"]["name"] - 被上传文件的名称,一般到服务器后要重命名
    $_FILES["file1"]["type"] - 被上传文件的类型
    $_FILES["file1"]["size"] - 被上传文件的大小,以字节计
    $_FILES["file1"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
    $_FILES["file1"]["error"] - 由文件上传导致的错误代码
    */
    
    //=================================文件下载
    if ($_GET['down']) {
        $file_name = "Chrysanthemum.jpg";
        $file_dir = "./upload/";
        if (!file_exists($file_dir . $file_name)) { //检查文件是否存在
            echo "文件找不到";
            exit;
        } else {
            // 输入文件标签
            Header("Content-type: application/octet-stream"); //指定以下输出的字符将以下载文件形式保存在客户端
            Header("Accept-Ranges: bytes");//指定下载的文件大小单位
            Header("Accept-Length: " . filesize($file_dir . $file_name));//指定下载的文件大小
            Header("Content-Disposition: attachment; filename=" . $file_name); //指定下载的文件名.扩展名
            $file = fopen($file_dir . $file_name, "r"); // 打开文件
            // 输出文件内容,除了下载文件编码之外该页面不能有任何其他输出
            echo fread($file, filesize($file_dir . $file_name));
            fclose($file);
            exit; //防止读取下面的其他输出
        }
    }
    ?>
    <html>
    <body>
    
    <form action="" method="post" method="post" enctype="multipart/form-data">
    <label for="file1Id">Filename:</label>
    <input type="file" name="file1" id="file1Id" />
    <br />
    <input type="submit" name="submit" value="Submit" />
    </form>
    
    </body>
    </html>
    
    <a href="?down=12">下载</a>
    
    提交文件时<form>的enctype 属性值必须写成 "multipart/form-data"
  • 相关阅读:
    小透明学弟的华为上岸之路
    手把手体验远程开发,确实爽
    老弟做了个网盘,炸了!
    聊聊我在腾讯和字节工作感受
    2021,编程语言如何选择?
    优化了破网站的搜索功能
    15 道超经典大厂 Java 面试题!重中之重
    我两年的坚持,值了!
    聊聊百度搜索背后的故事
    struts2的配置步骤
  • 原文地址:https://www.cnblogs.com/dreamhome/p/2764845.html
Copyright © 2011-2022 走看看