web编程之上传下载模块(PHP+Mysql)
2014-06-23 16:29
274 查看
web编程之上传下载模块(PHP防盗链)
一,文件上传与下载原理解析
1,文件上传
客户端:注意form表单设置 enctype="multipart/form-data" 以确保匿名上传文件的正确编码。
服务端:上传处理文件upload.php,代码如下:
<?php
$file = $_FILES['userfile']; //接收表单信息
$dest_dir='up'; //设定上传目录
$dest=$dest_dir.time().$file['name']; //设定文件名为时间加文件名,可有效避免重复。
if(!$file)
{
echo"移动文件出错";
exit();
}
else
{
$r=move_uploaded_file($file['tmp_name'],$dest);
echo "上传成功";
}
?>
上例中$_FILES['userfile']数组的内容含义如下:
$_FILES['userfile']['name'] :客户端机器文件的原名称 $_FILES['userfile']['type']
:文件的类型
$_FILES['userfile']['size']:文件的大小,单位为B
2,文件下载
需要下载一个xxx.rar的文件,首先创建一个download.php的文件,可以很容易的通过文件的ID从数据库中得到文件的真实存储位置,可以通过header()函数的location参数直接重定向到这个文件,但这样依然不安全。可以通过fread()函数把文件直接输出到浏览器提示用户下载。这样所有处理都是在服务器端完成的,用户就无法获得文件的具体位置。代码如下:<?php $file_name="xxxx.rar"; $file_dir="/up/"; if(!file_exists($file_dir.$file_name)) { echo"文件找不到"; exit(); } else { //打开文件 $file=fopen($file_dir.$file_name,"r"); //输入文件标签 header("content-type:application/octer-stream"); header("Accept-Ranges:bytes"); header("Accept-Length:",filesize($file_dir.$file_name)); header("Content-Disposition:attachment;filename=".$file_name); //输出文件内容 //读取文件内容直接输出到浏览器 echo fread($file,filesize($file_dir.$file_name)); fclose($file); exit(); } ?>
二,文件上传程序
1,上传文件的服务端处理(规定文件上传类型,文件大小限制)<?php header("content-Type:text/html;charset=utf8"); $uptypes=array( 'image/jpg', //上传文件类型列表 'image/png', 'image/jpeg', 'image/gif', 'image/bmp', 'audio/mp3', 'audio/x-ms-wma'); $max_file_size=20000000; //上传文件大小限制 $path_parts=pathinfo($_SERVER['PHP_SELF']); //取得当前路径 $destination_folder="up/"; //上传文件路径 $imgview=1; //是否生成预览图(1为生成,其他不生成) $imgreviewsize=1/2; //缩略图比例 $fiele=$_FILE['userfile']; if ($max_file_size<$file['size']) { echo "文件太大"; exit(); } if(!in_array($file['type'],$uptypes)) { echo"不能上传此文件类型"; exit(); } if(!file_exists($destinatuon_folder)) { mkdir($destination_folder); } $filename=$file["tmp_name"]; $image_size=getimagesize($filename); //getimagesize() 获得一个三元组,分别是图片长宽,类型 $pinfo=pathinfo($file["name"]; //pathinfo() 函数以数组的形式返回文件路径的信息。 $ftype=$pinfo['extension']; $destination=$destination.time().".".$ftype; $fname=time().$type; if(file_exists($destination)&&$overwrite!=true) { echo "同名文件已经存在。"; exit(); } //移动文件异常处理 if(!move_uploaded_file($filename,$destination)) { echo"移动文件出错。"; exit(); } else { //添加写入数据库的部分 $con mysql_connect('location','root','sspku') or die ("数据库连接失败。"); $db=mysql_select_db("zrfpku"); if(!$db) { die("can't use this DB") } else { $sql="insert into f_detail ('id','fname','ftype','des','url','utime') values ........"; $result=mysql_query($sql); if(!$result) { mysql_free_result($resuly); mysql_close($db); echo"数据记录插入失败"; } } } ?>
三,文件下载程序(略,见原理)
相关文章推荐
- web编程之日程表模块(PHP+Mysql+Ajax)
- web编程之注册以及登录验证模块(PHP+mysql)
- web编程之内容自动采集器模块(PHP+Mysql)
- Web编程之留言板模块(PHP+MYSQL)
- 《PHP和MySQL Web 开发,原书第4版》光盘/源代码/资源/下载
- php编程之文件上传与下载
- 使用PhpMysql实现图片文件上传下载
- Nginx+php(FastCGI)+Memcached+Mysql+APC Nginx高性能web服务器安装 APC模块安装 l
- [L-php]PHP功能模块——上传下载
- PHP and MySQL Web Development (PHP和MySQL Web开发)第五版 免积分下载
- 使用MYSQL、PHP和FLEX实现上传图片,动态在DataGrid中添加下载按钮和上传的图片.
- WEB_PHP_PHP文件上传下载
- Xoops Xphpbbi Modules (模块) 重构 ( Web Standard) 之 不完全篇 By Emerald 绿色学院 - Green Institute
- WIN环境下用Apache+PHP+MySql配置web服务器(菜鸟版)
- Begining PHP , Apache , MySQL Web Development
- php+mysql开源XNA 聚合程序发布 下载
- 有关Web的大文件上传和下载
- PHP+MYSQL+Apache学习使用软件下载
- Web Application(程序)中的上传打包压缩下载(java)
- Windows环境下用Apache+PHP+MySql配置web服务器