`

PHP 上传图片操作流程

阅读更多

首先来看下上传部分的表单代码:

CODE:

<form method="post" action="upload.php" enctype="multipart/form-data">
<table border=0 cellspacing=0 cellpadding=0 align=center width="100%">
<tr>
<td width=55 height=20 align="center"><input type="hidden" name="MAX_FILE_SIZE" value="2000000">文件: </TD>
<td height="16">
<input name="file" type="file"value="浏览" >

< input type="submit" value="上传" name="B1">
</td>
</tr>
</table>
</form>
这里有几个要注意的地方,首先看这句<form method="post" action="upload.php" enctype="multipart/form-data"> 这里我们采用POST方法,个别浏览器还支持PUT方法,当然这需要对脚本进行修改,我并不建议这么做。表单中必须设置enctype="multipart/form-data,这样,服务器就知道上传文件带有常规表单信息,记住,这个是必须设置的。此外还需要一个隐藏域来限制上传文件的最大长度: <input type="hidden" name="MAX_FILE_SIZE" value="2000000">,这里name必须设置成 MAX_FILE_SIZE,其值就是上传文件的最大长度,单位是B,这里我限制成2M。再看这句: <input name="file" type="file"value="浏览" >,type="file " 说明了文件类型,这样一个基本的上传文件接口就完成了,接下来讲讲如何用PHP来处理上传的文件,此外你的php.ini中设置的上传文件最大长度可能会 影响到你的实际上传,请根据实际情况修改,另PHP的上传是先传到临时目录,在移至指定目录的,了;临时目录的可根据需要修改,也可使用默认值。
好的,表单提交upload.php,来看看这个页面都有什么:
[php]
<?php

/*****************************************

Title :文件上传详解
Author:leehui1983(辉老大)
Finish Date:2006-12-28

*****************************************/

$uploaddir = "./files/";//设置文件保存目录 注意包含/
$type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型
$patch="http://127.0.0.1/cr_downloadphp/upload/files/";//程序所在路径

//获取文件后缀名函数
function fileext($filename)
{
return substr(strrchr($filename, '.'), 1);
}
//生成随机文件名函数
function random($length)
{
$hash = 'CR-';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++)
{
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}

$a=strtolower(fileext($_FILES['file']['name']));
//判断文件类型
if(!in_array(strtolower(fileext($_FILES['file']['name'])),$type))
{
$text=implode(",",$type);
echo "您只能上传以下类型文件: ",$text,"<br>";
}
//生成目标文件的文件名
else{
$filename=explode(".",$_FILES['file']['name']);
do
{
$filename[0]=random(10); //设置随机数长度
$name=implode(".",$filename);
//$name1=$name.".Mcncc";
$uploadfile=$uploaddir.$name;
}

while(file_exists($uploadfile));

if (move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile)){

if(is_uploaded_file($_FILES['file']['tmp_name']){
//输出图片预览
echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src='$uploadfile'></center>";
echo"<br><center><a href='javascrīpt:history.go(-1)'>继续上传</a></center>";
}
else{
echo "上传失败!";
}
}
}

?>
[/php]
刚看这些你可能有点晕~~,不过不要紧,听我讲完,你就会发现其实这玩意SO EASY!!首先我讲下原理,该程序以上传图片为例,先判断文件类型是否为图片格式,若是则上传文件,以随机数和时间的组合重新命名文件(避免上传文件重 名,这样做很有必要!),接着上传文件到指定目录,成功上传则输出上传的图片预览。这里要对程序中一些函数作些解释。先看return substr(strrchr($filename, '.'), 1) , strrchar()函数有什么作用呢,我举个例子大家就知道,比如一个图片文件 pic.jpg,我们用 strrchr处理,strrchr(pic.jpg,'.'),它将返回.jpg,明白了吗?该函数返回指定字符在该字符串 最后出现的位置后的字符。配合 substr() 我们就可以取到jpg,这样我们就得到了文件的后缀名,来判断上传文件是否符合指定格式。本程序把指定的格式放在一个数组中,实际使用时可根据需要添加。
接下来看产生随机数文件名部分, 我们看到mt_srand() 这个函数,手册上叫他“播下一个更好的随机数发生器种子”,其实就是初始化一个随机数的函数,参数是(double)microtime() * 1000000,这里如果不这是参数就会自动设置个随机数,当然这不符合我们的需要,如此一来,随机数就具备一定的长度,保证了上传文件不重名。接着,我们调用判断文件类型的函数,并将其转化为小写strtolower(fileext($_FILES['file']['name'])),这里有个很关键的东东$_FILES ,这是个超级全局数组,保存了需要处理的表单数据,如果开启了register_globals,也可以直接访问,但这是不安全的。看刚才那个上传接口 <inputname="file" type="file"value="浏览" >,根据这个表单名称,我们可以得到很多信息:
$_FILES['file' ]['name']--得到文件名称
$_FILES['file' ]['tmp_name']--得到临时存储位置
$_FILES['file' ]['size']--得到文件大小
$_FILES['file' ]['type']--得到文件MIME类型
得到这些信息,我们就可以轻松判断文件的信息了,是不是很方便?^_^,接下来还有一些函数需要了解,file_exists()--判断指定目录是否存在,不存在我们当然不能上传(好像是废话!),move_uploaded_file --将上传文件移至指定目录,is_uploaded_file --判断文件是否已经通过HTTP POST上传。成功上传,我们就输出预览,否则输出上传失败!大功告成php上传图片 (转) - 天嘿嘿 - Оο天灵灵㊣
大家可根据这个进行扩展,比如配合JS实现多文件上传,如DZ的上传效果,再深一点结合AJAX实现无刷新上传,很多博客都有采用,最后播放下下两篇原创文章的预告php上传图片 (转) - 天嘿嘿 - Оο天灵灵㊣
1我将把这个例子扩展,增加后台和数据库 部分,实现上传文件管理,审核,将发布在原创区。
2利用目录函数实现文件管理,将发布在新手区
希望感兴趣的朋友 届时观看~~~,谢谢!!!!!!

分享到:
评论

相关推荐

    js+Jcrop.js+php实现头像上传

    这个demo可以看做是一个头像上传的例子,实现了头像上传的大体流程,当然直接拿去就用可能不太现实,这只是一个demo,代码中的上传功能是用PHP实现的,所以这个例子需要在PHP环境下运行,刚刚学习,轻喷

    PHP动态网页设计与制作案例教程

    本书展示一个完整网站的设计和实现过程,详细地介绍动态网页设计和制作的技术和相关理论,全书共分为8章,主要内容包括:动态网站设计概述、动态网站编程环境、网站主页设计与PHP基础、网站计数器设计与PHP文件访问...

    西安PHP服务中心为企业建设网站的流程

    西安PHP服务中心通过专业的项目实施流程为您提供优质的服务,我们的项目实施和管理流程可以最大限度地控制整个项目进度、确保项目质量和保障客户的权益。 建站申请 1、客户提出网站建设基本要求,选择相关网站模板...

    PicWind (开源PHP网络相册) v0.21.zip

    本次更新加入了swfupload上传组件,可以方便的从前端上传图片文件和zip文件,这样可以避免频繁使用ftp上传,简化了上传操作,对于不支持flash上传的浏览器仍然保留html上传功能。 说一下流程,点击上传后可以直接...

    IMGCMS图片管理系统 v1.5.rar

    流程操作: 1. 上传 程序文件 目录中的所有文件到服务器 2. 设置目录属性(windows 服务器可忽略这一步) 以下这些目录需要可读写权限(0777) ./attach ./data 含子目录 3. 执行安装脚本 (**)/install.php ----...

    微信js-sdk上传与下载图片接口用法示例

    微信js-sdk 中上传图片接口(uploadImage)和下载图片接口(downloadImage)都是针对微信服务器本身的。以官方文档为准 注: 1.使用chooseImage接口获取到微信客户端图片地址的与都是 weixin://xxxx 2.上传图片有效期3天...

    php项目-基于PHP实现的WEB图片共享系统(源代码+论文).rar

    8. 界面设计与用户体验:简洁美观的界面设计,人性化的操作流程,提供良好的用户体验。 该项目的源代码和论文详细阐述了系统的设计思路、实现方法和关键技术,为开发者提供了宝贵的参考资料。同时,该项目采用模块...

    PHP网络编程技术与实践 源码

    12.3 带数据库操作的上传模块 12.4 本章小结 第13章 分页显示模块 13.1 分页技术的基本原理 13.2 数据库介绍 13.3 简单的分页技术实现 13.4 改进的分页显示模块 13.5 本章小结 第14章 计数器模块 14.1 文本计数器 ...

    IMGCMS图片管理系统 v1.6

    MySQL 4.0 及以上流程操作:1. 上传 程序文件 目录中的所有文件到服务器2. 设置目录属性(windows 服务器可忽略这一步) 以下这些目录需要可读写权限(0777) ./attach ./data 含子目录3. 执行安装脚本 (域名)/...

    TUTUCMS图片网站管理系统 v2.3 图片网站源码

    TUTUCMS图片网站管理系统流程操作: 1. 上传 程序文件 目录中的所有文件到服务器 2. 设置目录属性(windows 服务器可忽略这一步) 以下这些目录需要可读写权限(0777) ./attach ./data 含子目录 3. 执行安装脚本 ...

    纯PHP的购物车大作业

    未完成:没有图片上传的功能,需要使用系统里自带的图片. 缺点: 页面不漂亮, 模板也不怎么好看,需要自己套用模板. 实现思路: php 实现购物车详解 & 源码 学习文档: https://my.oschina.net/python8/blog/4292163 1. ...

    php网络开发完全手册

    2.4 流程控制语法 30 2.4.1 程序控制语句的简介 30 2.4.2 条件控制语句 30 2.4.3 循环控制语句 33 2.4.4 转移控制语句 35 2.5 表达式 36 2.5.1 简单的表达式例子 36 2.5.2 表达式的分类 36 2.5.3 算术操作表达式 36 ...

    phpapp威客系统 v2.6 GBK build20141211.zip

    并提高用户上传图片附件的操作体验 5.完美的 任务流程 任务模拟商品交易流程,交易时生产订单,可对订单批量管理,发货,支付,退款等流程。 6.完美的 任务操作 任务前台 支持 批量 中标;不合格;点评等会员中心...

    php商城系统 v3.0 rc6.rar

    调整 网站皮肤的管理权限归创始人拥有 即时非创始人拥有下载、上传、备份权限也不能使用 完善 订单的逻辑处理 完善 订单 操作流程 增加对货到付款的处理 完善 添加编辑商品时品牌数据多时查找麻烦的的问题 完善 ...

    Connect_PHP_SDK_for_OAuth2_V1.2_new

    * 上传图片 */ function upload($sUrl,$aPOSTParam,$aFileParam){ ... //防止请求超时 set_time_limit(0); $oCurl = curl_init(); if(stripos($sUrl,"https://")!==FALSE){ curl_setopt($oCurl, CURLOPT_SSL_...

    php OA 源码 办公自动化源码

    支持新闻评论,可以直接在新闻及新闻评论中上传文件和图片,可以对重要的新闻进行置顶,有阅读者的回执以及查看每一个阅读者的阅读时间,在发布新闻之前,可以设定审批流程,可以设定必须通过审批才能发布相关新闻。...

    PHP云人才系统(phpyun) v3.2 build141231.rar

    33:新增:个人中心增加“上传作品”操作。 34:新增:HR工具箱 35:新增:后台简历置顶和简历推荐,刷新功能。 36:新增:积分商城。 37:新增:简历、职位浏览记录 38:新增:会员,职位,简历 来源 39:...

    PHP商城系统 V2.0.5 beta 2.rar

    完善 (为支持大数据,重写幻灯片),幻灯片上传时图片文件使用中文出现的错误问题 幻灯片分组细化 完善 后台权限菜单 改进算法 完善 后台查看当前在线用户功能(只有创始人能查看且能强制踢出某个已登录管理员) 完善...

    IMGCMSphp图片管理系统v1.6

    IMGCMS-是一款图片类网站开发的一套CMS管理程序! 打造属于你自己的图片管理系统... MySQL 4.0 及以上 流程操作: 1. 上传 程序文件 目录中的所有文件到服务器 2. 设置目录属性(windows 服务器可忽略这一步) 以下这些

    PHP基础教程 是一个比较有价值的PHP新手教程!

    你只需要30分钟就可以将PHP的核心语言特点全部掌握,你可能已经非常了解HTML,甚至你已经知道怎样用编辑设计软件或者手工来制作好看的WEB站点。由于PHP代码能够无障碍的添加进你的站点,在你设计和维护站点的同时,...

Global site tag (gtag.js) - Google Analytics