- 浏览: 53699 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
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 1271字符 说明 ^ ... -
php学习笔记(魔术方法的使用)
2010-08-26 20:34 10841 __construct().当实例 ... -
php学习笔记(开发中常设置的内置函数)
2010-08-23 22:48 1647为了使自己的程序在不同的平台中拥有更好的兼容性,很多时候我们都 ... -
目录操作
2010-08-23 15:31 0皆さんこんにちは、まず自己紹介させていただき、私は第1事業部の ... -
php学习笔记(日期函数用法总结)
2010-08-22 13:36 1344php中对时间日期的处理时相对简单的,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 747//php中的序列化 //大部分用与 处理数组传递,数组存库 ... -
php学习笔记(搜索引擎)
2010-08-17 21:34 0搜索引擎 -
php学习笔记(反射机制)
2010-08-17 21:00 0反射 -
php学习笔记(仿百度分页类)
2010-08-17 20:59 2299本类能够实现像百度、谷歌一样的分页效果 ***** ... -
php学习笔记(php.inc的配置详解)
2010-08-15 11:45 1190学习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编程语言的过程中逐步积累并整理的,涵盖了初学者从基础到进阶的一些关键知识点。PHP是一种广泛应用于网页开发的服务器端脚本语言,尤其在...
PHP框架学习笔记是学习PHP框架的重要笔记,涵盖了CI框架的基本概念、控制器、模型、视图、URI路由、数据库操作、表单提交、上传文件、Session管理等方面的知识点。 CI框架的业务流程是从域名或入口开始的,默认入口...
在PHP中,文件上传和下载是常见的Web应用功能,用于处理用户上传的文件或提供文件供用户下载。...总的来说,理解并熟练掌握PHP文件上传与下载的配置、错误处理和安全措施,对于开发健壮的Web应用程序是必不可少的。
根据提供的“php100学习笔记”的部分内容,我们可以总结出一系列重要的PHP知识点,涉及字符串处理、文件操作、类与对象的基础等内容。 ### 字符串处理 #### `str_replace` `str_replace`函数用于在字符串中替换...
【PHP学习笔记】 在深入PHP之前,我们先回顾一下HTML的一些基础知识点。`<hr>`标签用于在HTML页面中创建一条水平线,起到分隔内容的作用。`target="_blank"`属性用于链接,当点击链接时会在新窗口打开目标页面。在...
【PHP学习笔记】是作者四个月学习PHP过程中积累的个人笔记,主要涵盖了HTML基础、CSS基础以及PHP基础等核心内容。这些笔记对于初学者来说是非常有价值的资源,因为它们以小案例的形式展示了各种知识点,便于理解和...
《PHP全套笔记韩顺平》资源集合了著名IT教育机构传智播客讲师韩顺平的PHP教学精华,包括详细的笔记文档和部分PPT,旨在为PHP初学者和进阶者提供全面的学习材料。这份资源涵盖了PHP的基础知识、高级特性以及实际项目...
《PHP学习笔记实例代码详解》 PHP,全称“PHP:Hypertext Preprocessor”,是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发。它能够嵌入到HTML中,使得开发者可以灵活地处理动态网页内容。这篇学习笔记...
【PHP学习笔记】是一份全面的教程资源,旨在帮助初学者快速掌握PHP编程语言的基础和进阶知识。这份笔记包含了从基本语法到高级特性的详细讲解,是学习PHP的理想起点。 1. **PHP基础语法**(01_PHP语法.doc):这...
PHP的学习笔记通常会涵盖以下几个核心知识点: 1. **基础语法**:PHP的基础包括变量、常量、数据类型(如字符串、整型、浮点型、数组、布尔型、NULL)、运算符(算术、比较、逻辑、位运算、赋值)、流程控制(条件...
这份"php第一部分学习笔记源码"是初学者掌握PHP基础的一个宝贵资源,它涵盖了PHP的基础概念、语法以及常见应用。 首先,PHP的核心特性在于它的服务器端脚本能力。这意味着PHP代码在服务器上执行,然后将结果以HTML...
这篇学习笔记将深入探讨这一主题,旨在帮助初学者和经验丰富的开发者更好地理解和利用PHP处理文件系统。 首先,了解基本的文件操作函数至关重要。例如,`file_exists()`用于检查文件或目录是否存在,`is_file()`则...