PHP开发中文件的上传与下载

来源:互联网 发布:我做淘宝客怎么找商家 编辑:程序博客网 时间:2024/05/24 04:32

在PHP中想要实现文件的上传功能其实很简单。。下面我们就来先介绍一下要用的知识点,最后再给出源码。

要让Web服务器具有上传功能,得在配置文件php.ini中设置允许文件上传。配置文件php.ini对文件上传的选项如下表所示。

文件上传配置选项表选项默认值说明file_uploads1(默认开启)是否开启文件上传upload_tmp_dirnull(系统临时目录)上传文件的临时存储目录upload_max_filesize                2M允许上传文件大小的最大值
当然,上传功能默认是开启的,也可以根据自己的需要去php.ini更改设置。

接下来,简要说明下文件上传的步骤:

1.文件的上传首先通过HTML表单中的file控件将文件上传至php.ini中upload_tmp_dir指定的临时目录。

2.然后由PHP函数move_uploaded_file将上传的文件从临时文件移动到服务器指定目录。


OK,源码奉上,不懂得地方可看注释:

upload.html

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  <meta name="viewport" content="user-scalable=no, width=device-width"/> <form action="uploadhandle.php" enctype="multipart/form-data" method="post" name="uploadfile">选择上传文件:<input type="file" name="upfile" /><br> <input type="submit" value="上传" /></form>

要注意的是必须指定表单的enctype属性为“multipart/form-data”才可上传文件。

uploadhandle.php

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  <meta name="viewport" content="user-scalable=no, width=device-width"/> <?php// include_once 'Error.php';//文件上传表单所在的文件名$uploadPage = "upload.html";//获取要上传到的目录,这里__FILE__变量表示文件当前的绝对路径(包含文件名);realpath的作用是获取规范的绝对路径;dirname作用是去掉文件名,获得目录名$dir = dirname(realpath(__FILE__)).DIRECTORY_SEPARATOR;//这里DIRECTORY_SEPARATOR其实就是‘/’//定义一个保存错误信息的变量$err_msg = false;//判断是否上传了文件if(!isset($_FILES['upfile'])){$err_msg = "表单不完全";}else{$fileImg = $_FILES['upfile'];}//判断上传的文件是否正确,如果不正确则给予相应的错误信息switch ($fileImg['error']){case UPLOAD_ERR_INI_SIZE:$err_msg = "文件超过最大上传限制,请重新<a href='{$uploadPage}'>上传</a>\n ";break;case UPLOAD_ERR_PARTIAL:$err_msg = "文件上传不完全,请重新<a href='{$uploadPage}'>上传</a>\n ";break;case UPLOAD_ERR_NO_FILE:$err_msg = "没有选择文件,请重新<a href='{$uploadPage}'>上传</a>\n ";break;case UPLOAD_ERR_FORM_SIZE:$err_msg = "文件超过页面最大上传限制";break;case UPLOAD_ERR_CANT_WRITE:$err_msg = "文件写入失败,请重新<a href='{$uploadPage}'>上传</a>\n";break;case UPLOAD_ERR_NO_TMP_DIR:$err_msg = "没有临时文件夹,请重新<a href='{$uploadPage}'>上传</a>\n";break;case UPLOAD_ERR_OK:break;default:$err_msg = "未知错误,请重新<a href='{$uploadPage}'>上传</a>\n";}//规定上传的文件的种类,如果没有上传规定的种类则给予错误信息if(!in_array($fileImg['type'], array('image/jpeg','image/pjpeg','image/png'))){$err_msg = "只允许上传.png或.jpg的图片。请重新<a href='{$uploadPage}'>上传</a><br/>";}//如果上传的文件没有出错,则将该文件从临时文件夹转移到给定的文件夹(这里将图片保存到是当前目录下的source文件夹里)if(!$err_msg){if(!move_uploaded_file($fileImg['tmp_name'], $dir."source/".$fileImg['name'])){$err_msg = "移动文件失败。请重新<a href='{$uploadPage}'>上传</a><br/>";}}//如果以上步骤有出现错误,则输出错误信息,否则显示出刚上传的图片if($err_msg){echo $err_msg;}else{echo "<img src='source/{$fileImg['name']}' alt = '上传的文件' title='上传的文件' />";echo "上传成功!";}


至于文件的下载嘛,那就更简单了*>_<*

对于文件的下载,只需给出要下载文件的所在位置即可

download.php

<?php//相对于网站根目录文件存储路径$downdir = "source/";//打开目录$dirHandle = @opendir($downdir);//读取里面的所有文件(除了本身和上级目录)while($filen = readdir($dirHandle)){if($filen != "." && $filen != ".."){echo "<a href='".$downdir.$filen."'>".$filen."</a><br/>";}}//关闭目录closedir($dirHandle);





0 0
原创粉丝点击