- 浏览: 51973 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
wangyalei:
phpgood 写道嗯嗯,挺全面的,但正则是很容易忘记的!我想 ...
php学习笔记(正侧表达式一) -
phpgood:
期待你分享更多的学习笔记!
php学习笔记(魔术方法的使用) -
phpgood:
好!
php学习笔记(魔术方法的使用) -
phpgood:
嗯嗯,挺全面的,但正则是很容易忘记的!我想问的是怎样才能比较牢 ...
php学习笔记(正侧表达式一) -
gryphone:
干嘛 吃素 这样人家会怀疑你的体质的 00X
最牛软件开发人员----自我评价
php中的文件上传很简单 不像java 中需要借助 commons-fileupload-1.2.1.jar 等第三个的上转工具来做,下面我写了一个简单的上转类。
php中$_FILES内置函数包含了要上传文件的所有信息量。
$_FILES("uploadName"); 输出的话可以看见他是一个数组里面包含了 name,type,tmp_name,error,size元素
上传不可避免,要出现异常,php为此给出了5个类型常
0---> 文件上转成功 --->UPLOAD_ERR_OK
1--->上传文件超过php.ini 的upload_max_file的设置--->UPLOAD_ERR_INI_SIZE
2--->上传文件超过特殊表单项MAX_FILE_SIZE(我们自己设置的)设置的值--->UPLOAD_ERR_FORM_SIZE
3---> 文件只有部分上转-----> UPLOAD_ERR_PARTLAY
4---> 没有文件被上转-----> UPLOAD_NO_FILE
一个简单的上传
<?php /****** * @author wangyalei * 上传公用类 * */ class upload { //上传的类型 private $type = array(); //上传的保存路径 private $savepath; //上传的大小 private $size; //上传内容信息 private $uploadinfo; private $label_name; /****** * @param $type 可以是数组 也可是 多个字符串(字符串,字符串) * @param $savepath 上传后保存的路径 * @param $size 设定上传的大小 * */ public function __construct($type,$savepath,$size,$label_name){ $this->type = is_array($type)?$this->type = $type:$this->type = implode(",",$type); $this->savepath = $savepath; $this->size = $size; $this->label_name = $label_name; $this->uploadinfo = $_FILES[$label_name]; } //保存 public function save(){ //上传要进行检测是否合法 //1 判断用户是真实上传 if(!is_uploaded_file($this->uploadinfo["tmp_name"])){ echo "文件不存在"; exit; } //2判断类型是否正确 if(!in_array($this->uploadinfo["type"],$this->type)){ echo "<font color='red'>文件类型不符!只能上传".implode(',',$this->type)."类型</font>"; exit; } //3判断上传大小 if($this->size<$this->uploadinfo["size"]){ echo "文件太大!"; exit; } //2 判断是否有要保持的文件夹 如没有创建一个 if(!file_exists($this->savepath)){ mkdir($this->savepath); } //从临时目录移除 并给文件重命名 防止 重名覆盖 if(!move_uploaded_file($this->uploadinfo["tmp_name"],$this->savepath."/".$this->uploadinfo["name"])){ echo $this->uploadinfo["tmp_name"]; echo "移动文件出错"; exit; } //最后判断一点错都没有 if($this->uploadinfo["error"]=="0"){ echo "上传成功"; } } } ?>
测试一下:
<?php /* * Created on 2010-8-19 * * To change the template for this generated file go to * Window - Preferences - PHPeclipse - PHP - Code Templates */ include("upload.class.php"); //上传文件类型列表 $uptypes=array( 'image/jpg', 'image/jpeg', 'image/png', 'image/pjpeg', 'image/gif', 'image/bmp', 'image/x-png' ); $max_file_size=2000000*1024; //上传文件大小限制, 单位BYTE $destination_folder="uploadimg"; //上传文件路径 $upload = new upload($uptypes,$destination_folder,$max_file_size,"file1"); $upload->save(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>上转文件</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="file1"><span id="upload"></span><br/> <input type="submit" name="submit" value="上传"> </form> </body> </html>
以上是上传,下面是下载
<?php function download($url, $filename) { // 获得文件大小, 防止超过2G的文件, 用sprintf来读 %u 十进制无符号整数 $filesize = sprintf ( "%u", filesize($url ) ); //spinrtf if (!$filesize) { return; } header ( "Content-type:application/octet-stream\n" ); //application/octet-stream header ( "Content-type:unknown/unknown;" ); header ( "Content-disposition: attachment; filename=\"" . $filename . "\"" ); header ( 'Content-transfer-encoding: binary' ); if ($range = getenv ( 'HTTP_RANGE' )) { // 当有偏移量的时候,采用206的断点续传头 $range = explode ( '=', $range ); $range = $range [1]; // header ( "HTTP/1.1 206 Partial Content" ); header ( "Date: " . gmdate ( "D, d M Y H:i:s" ) . " GMT" ); header ( "Last-Modified: " . gmdate ( "D, d M Y H:i:s", filemtime ( $url ) ) . " GMT" ); header ( "Accept-Ranges: bytes" ); header ( "Content-Length:" . ($filesize - $range) ); header ( "Content-Range: bytes " . $range . ($filesize - 1) . "/" . $filesize ); header ( "Connection: close" . "\n\n" ); } else { header ( "Content-Length:" . $filesize . "\n\n" ); $range = 0; } loadFile ( $url ); } function loadFile($filename, $retbytes = true) { $buffer = ''; $cnt = 0; $handle = fopen ( $filename, 'rb' ); if ($handle === false) { return false; } while ( ! feof ( $handle ) ) { $buffer = fread ( $handle, 1024 * 1024 ); echo $buffer; ob_flush (); flush (); if ($retbytes) { $cnt += strlen ( $buffer ); } } $status = fclose ( $handle ); if ($retbytes && $status) { return $cnt; // return num. bytes delivered like readfile() does. } return $status; } ?>
测试代码
<?php include("downupload.php"); download($_GET[url], $_GET[name]); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <a href="index.php?url=index.php&name=我的.txt">下载</a> </body> </html>
发表评论
-
php学习笔记(正侧表达式一)
2010-08-29 22:55 1224字符 说明 ^ ... -
php学习笔记(魔术方法的使用)
2010-08-26 20:34 10511 __construct().当实例 ... -
php学习笔记(开发中常设置的内置函数)
2010-08-23 22:48 1575为了使自己的程序在不同的平台中拥有更好的兼容性,很多时候我们都 ... -
目录操作
2010-08-23 15:31 0皆さんこんにちは、まず自己紹介させていただき、私は第1事業部の ... -
php学习笔记(日期函数用法总结)
2010-08-22 13:36 1291php中对时间日期的处理时相对简单的,php中提供了date ... -
php学习笔记(数组函数用法总结)
2010-08-21 11:24 0array -
php学习笔记(预防session拦截)
2010-08-20 21:21 0拦截 -
php学习笔记(异常处理)
2010-08-20 15:10 0exception -
php学习笔记(过滤器)
2010-08-20 14:29 0过滤器 -
php学习笔记(国际化)
2010-08-20 14:00 0国际化 -
php学习笔记(防sql注入)
2010-08-20 13:59 0sql注入 -
php学习笔记(数字函数用法总结)
2010-08-20 13:53 0数字 -
php学习笔记(序列化应用)
2010-08-18 10:22 689//php中的序列化 //大部分用与 处理数组传递,数组存库 ... -
php学习笔记(搜索引擎)
2010-08-17 21:34 0搜索引擎 -
php学习笔记(反射机制)
2010-08-17 21:00 0反射 -
php学习笔记(仿百度分页类)
2010-08-17 20:59 2230本类能够实现像百度、谷歌一样的分页效果 ***** ... -
php学习笔记(php.inc的配置详解)
2010-08-15 11:45 1149学习php 先要了解一下php的配置 对以后的学习很有帮助 , ... -
php学习笔记(svs)
2010-08-15 11:41 0svd -
php学习笔记(字符过滤类)
2010-08-15 00:55 0过滤 -
php学习笔记(HTTP认证)
2010-08-14 13:20 0http
相关推荐
PHP文件上传与下载学习笔记 PHP版本:1、文件上传配置 文件上传后,Php获取的上传文件的信息 PHP端config配置文件配置
文件上传 53 写入文件 54 拷贝文件 54 文件和文件夹的创建和删除 55 画图 56 画饼状图 56 案例一:投票柱状统计图 57 案例二:验证码 59 GD库 60 PHP和数据库 64 mysql扩展库 64 一.创建一张用户表 64 二...
PHP个人学习笔记,非常有用的啊,欢迎各位大佬下载使用哦
网站开发必备之良器,怎可不学。上传一部分自己学PHP是做的笔记,希望对PHP学习的有一点帮助!!
#php学习笔记 ##ajax文件夹下的小例子 ajax实现输入框自动完成功能 auto-complete.html,auto-complete.php ajax实现无刷新评论 comment.html,comment.php ajax实现无刷新点赞 praise.php handle-praise.php ajax实现...
本文实例讲述了微信小程序学习笔记之文件上传、下载操作。分享给大家供大家参考,具体如下: 前面介绍了微信小程序登录API与获取用户信息操作。这里再来介绍一下文件的上传与下载操作。 【文件上传】wx.uploadFile ...
python php java javascript c等多种语言, 以及涉及到的各种框架, 数据库等个人笔记 总计38万+字, 打包上传以便备份, 有需要的朋友也可以下载
CSDN上的QT4中文教程 我都下载试了下,都是什么PHP文件不能用. 还好从51CTO下载了份.上传下.以备大家共享.
毕设&课设&项目&实训-计算机基础知识学习笔记.操作系统.计算机网络.数据库..Java.后端.设计模式.数据结构与算法. 【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件...
minIsay是一个简单的笔记程序,是我在学习php过程中的一个练习程序。 minIsay发布,主要用于记录一些简短,零碎的内容。minIsay是从Isay3修改、精简而来,minisay更简洁,操作更方便。 作者:wenbin(QQ:792278952...
asp基础HTML语言 用来描述网页/网站布局的标签语言 asp.net jsp php 1/必要格式 <html> <head> <title>欢迎来到学习HTML语言</title> </head> <body> 123456 </body>...
渗透测试,文件上传漏洞笔记知识梳理图,适用于学习渗透测试初学者学习,仅供参考学习。java php jsp jxsp,漏洞利用,前端验证,ISS,Apache,Nginx,通用手法,WAF绕过特殊情况处理,以及安全防护漏洞修复。
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码...鼓励下载和使用,并欢迎大家互相学习,共同进步。
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码...鼓励下载和使用,并欢迎大家互相学习,共同进步。
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码...鼓励下载和使用,并欢迎大家互相学习,共同进步。
本程序是刚刚学习php是所写的一个练手程序包括登陆、防强登、分页、上传图片等等php和html的基本功能
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码...鼓励下载和使用,并欢迎大家互相学习,共同进步。