<?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"