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"
原文地址:https://www.cnblogs.com/dreamhome/p/2764845.html