phpphp大文件上传传原理是怎样的?

您所在的位置: &
PHP文件上传的原理及实现
PHP文件上传的原理及实现
清华大学出版社
《PHP典型模块与项目实战大全》第7章上传与下载模块(PHP防盗链+ActiveXObject控件),本章将从上传和下载的原理讲起,由浅入深地展开,最终将上传功能与下载功能整合成一个完整的应用平台。本节为大家介绍PHP文件上传的原理及实现。
7.1.1& PHP文件上传的原理及实现
在PHP中,文件上传功能是使用PHP提供的文件函数来实现的。下面通过例子使读者直观地了解上传的原理以及程序编码的实现。
1.客户端上传
创建一个文件upload.html,这是一个最基本的上传的表单代码,代码如下:&xmlns="undefined"&&文件上传页面&&http-equiv="Content-Type"&content="text/&charset=gb2312"&&name="description"&content="文件上传页面"&&&type="text/css"&body,td{font-family:tahoma,verdana,font-size:11line-height: &15background-color:color:#666666; &strong{font-size:12} &a:link{color:#0066CC;} &a:hover{color:#FF6600;} &a:visited{color:#003366;} &a:active{color:#9DCC00;} &a{TEXT-DECORATION:none} &td.irows{height:20background:url("index.php?i=dots")&repeat-x&bottom} &&&&bgcolor="#FFFFFF"&&&&&enctype="multipart/form-data"&method="post"&name="upform"& &&&action=""&&&&&&border="1"&width="55%"&id="table1"&cellspacing=0&&&&&&&&&&&&&&&&&colspan="2"&&&&&&&&&&&&&&align="center"上传文件: &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&width="10%"&&&&&&&&&&width="71%"&&&&&&&&&&&&&&type="hidden"&name="max_file_size"&value="100000"& &&&&&&&&&&&&&&name="userfile"&type="file"&&&&&&&&&&&&&&type="submit"&value="上传文件"&&&&&&&&&&&&&&&&&&&&&&&&&&&
在浏览器中加载upload.html文件,效果如图7.1所示。
图7.1& 文件上传表单预览要实现文件的上传,需要在表单标签中设置以下选项,以确保匿名上传文件的正确编码。enctype="multipart/form-data"&
【代码解读】
表单选项MAX_FILE_SIZE的隐藏值域,通过设置Value值的大小可以限制上传文件的尺寸。当然,MAX_FILE_SIZE的值相对于浏览器只是一个参考值,实际上它可以被轻易地绕过。实际应用中是通过在PHP配置文件中设置上传文件最大值,来做上传文件的限制的。在表单中加上MAX_FILE_SIZE,可以及时发现上传文件尺寸过大的问题。
2.服务器端上传
创建服务器端上传处理文件upload.php,代码如下:&&&&&$file&=&&$HTTP_POST_FILES&['userfile'];&//接收表单信息 &&&&&$dest_dir&=&'up';&&&&&&&&&&&&&&&&&&&&&&&&&&&//设定上传目录 &&&&&$dest&=&$dest_dir&.&time&()&.&$file&['name'];&&&&//设置文件名为时间加文件名,这样可有效避免重复 &&&&&if&(!&$file)&{ &&&&&&&&&echo&"&color='red'移动文件出错!"; &&&&&&&&&exit&(); &&&&&}&else&{ &&&&&&&&&$r&=&move_uploaded_file&(&$file&['tmp_name'],&$dest&); &&&&&&&&&//chmod($dest,&0755);&&&//设定上传的文件的属性& &&&&&&&&&echo&"&color='red'恭喜文件"&.&$dest&.&"上传成功!"; &&&&&} &&
【代码解读】
当文件上传成功后,系统会提示文件上传成功的信息。上面例子中$_FILES['userfile']数组的内容含义如下所示。
$_FILES['userfile']['name']:客户端机器文件的原名称。
$_FILES['userfile']['type']:文件的MIME类型,例如"image/gif"。
$_FILES['userfile']['size']:已上传文件的大小,单位为B。
$_FILES['userfile']['tmp_name']:文件被上传后在服务端储存的临时文件名。
$_FILES['userfile']['error']:该文件上传相关的错误代码。
其中,错误代码的含义如下所示。
值0:没有错误发生,文件上传成功。
值1:上传的文件超过了php.ini中upload_max_filesize选项限制的值。
值2:上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值。
值3:文件只有部分被上传。
值4:没有文件被上传。
【责任编辑: TEL:(010)】&&&&&&
关于&&&&的更多文章
本书深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考
网友评论TOP5
本书描述了黑客用默默无闻的行动为数字世界照亮了一条道路的故事。
本书以世界顶级的财经杂志及商务咨询报告为标杆,讲解
本书涵盖了微软的王牌产品SharePoint 2010主要功能的
什么是成功?本书认为,天资、机遇、优良性格是成功的
公钥基础设施PKI(Public Key Infrastructure)是利用公钥概念和加密技术为网上通信提供的符合标准的一整套安全基础平台。公钥基
51CTO旗下网站ThinkPHP框架文件上传方法
本文是一个thinkphp框架下实现的完整文件上传示例代码,文件上传是web开发中非常常见的一个功能,感兴趣的同学参考下.
本文是一个thinkphp框架下实现的完整文件上传示例代码,文件上传是web开发中非常常见的一个功能,感兴趣的同学参考下.
一、action部分:
FileAction.class.php页面代码如下:
class FileAction extends Action{
function index(){
$file=M('file');
$list=$file-&select();
$this-&assign('filelist',$list);
$this-&display();
function upload(){
//文件上传地址提交给他,并且上传完成之后返回一个信息,让其写入数据库
if(empty($_FILES)){
$this-&error('必须选择上传文件');
$a=$this-&up();
if(isset($a)){
//写入数据库的自定义c方法
if($this-&c($a)){
$this-&success('上传成功');
$this-&error('写入数据库失败');
$this-error('上传文件异常,请与系统管理员联系');
private function c($data){
$file=M('file');
'0';
for($i = 0; $i & count($data)-1; $i++) {
$data['filename']=$data[$i]['savename'];
if( $file-&data($data)-&add())
if($num==count($data)-1)
private function up(){
//完成与thinkphp相关的,文件上传类的调用
import('@.Org.UploadFile');//将上传类UploadFile.class.php拷到Lib/Org文件夹下
$upload=new UploadFile();
$upload-&maxSize=';;//默认为-1,不限制上传大小
$upload-&savePath='./Public/Upload/';//保存路径建议与主文件平级目录或者平级目录的子目录来保存
$upload-&saveRule=//上传文件的文件名保存规则
$upload-&uploadReplace=//如果存在同名文件是否进行覆盖
$upload-&allowExts=array('jpg','jpeg','png','gif');//准许上传的文件类型
$upload-&allowTypes=array('image/png','image/jpg','image/jpeg','image/gif');//检测mime类型
$upload-&thumb=//是否开启图片文件缩略图
$upload-&thumbMaxWidth='300,500';
$upload-&thumbMaxHeight='200,400';
$upload-&thumbPrefix='s_,m_';//缩略图文件前缀
$upload-&thumbRemoveOrigin=1;//如果生成缩略图,是否删除原图
if($upload-&upload()){
$info=$upload-&getUploadFileInfo();
$this-&error($upload-&getErrorMsg());//专门用来获取上传的错误信息的
二、view模板部分:
模板文件index.html代码如下:
&volist name=&filelist& id=&vo&&
小图:&img src=&__PUBLIC__/upload/s_{$vo['filename']}& /&&br /&
大图:&img src=&__PUBLIC__/upload/m_{$vo['filename']}& /&&br /&
&form action=&__URL__/upload& method=&post& enctype=&multipart/form-data&&
&input type=&file& name=&file[]& /&&br /&
&input type=&file& name=&file[]& /&&br /&
&input type=&file& name=&file[]& /&&br /&
&input type=&submit& value=&上传& /&
相信本文所述实例对大家的ThinkPHP程序开发可以起到一定的借鉴作用。
Copyright &
All Rights Reservedphp上传文件_百度知道
php上传文件
我用JS传给php的一个需要上传文件的路径,php需要怎么把那个文件上传上去,注:不用文件域上传,php接收值,而是用AJAX中JS读取文件域里面的文件路径,PHP可以上传上去吗
提问者采纳
楼上乱说,根本不可能。既然能用js传文件名,那么你可以不传了,php那边随便写个文件名就行了,对不对?然后php就能随便获取访问者电脑上的文件了,你觉得可能吗?上传文件只有文件域这一个方法,别想绕过去。
提问者评价
额,异想天开了,我还以为那样可以了呢
其他类似问题
按默认排序
其他2条回答
可以用ajax上传 但是原理跟 form那种方式一样 只是封转隐藏了。还有一种是可以用flash结合ajax上传 有jquery插件 网上可以找得到 uploadify但是如果只是单纯的通过js传路劲给php,是不可能的。
可以的吖 怎么不可以?
上传文件的相关知识
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 php 多文件上传 的文章

 

随机推荐