PHP图片上传实例分析
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-21 23:00:10 浏览: 评论:0
图片上传与文件上传在php中都是一样直接使用move_uploaded_file($_FILES["filename"]["tmp_name"]就可以实现了,下面我来给大家分享一个站长分享文件上传例子.
前期需要了解的知识点:
move_uploaded_file()文件上传函数,代码如下:
- if(move_uploaded_file($_FILES["filename"]["tmp_name"])
- {
- echo '文件上传成功';
- }
$_FILES php全局变量
$_FILES:经由 HTTP POST 文件上传而提交至脚本的变量,类似于旧数组 $HTTP_POST_FILES 数组,依然有效,但反对使用,代码如下:
$_FILES['myFile']['name'] 客户端文件的原名称。
$_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。
$_FILES['myFile']['size'] 已上传文件的大小,单位为字节。
$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但用 putenv() 函数设置是不起作用的。
$_FILES['myFile']['error'] 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量)
UPLOAD_ERR_OK 值:0; 没有错误发生,文件上传成功。
UPLOAD_ERR_INI_SIZE 值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
UPLOAD_ERR_FORM_SIZE 值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
UPLOAD_ERR_PARTIAL 值:3; 文件只有部分被上传。
UPLOAD_ERR_NO_FILE 值:4; 没有文件被上传。 值:5; 上传文件大小为0.
核心文件,upimg.htm,代码如下:
- <!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>上传图片</title>
- <script language="javascript">
- function $(id){
- return document.getElementById(id);
- }
- function ok(){
- $("logoimg").src = $("filename").value;
- }
- </script>
- </head>
- <body>
- <table border="0" align="center" cellpadding="0" cellspacing="0">
- <tr>
- <td height="45" align="center" valign="middle">
- <form action="uploadf.php?submit=1" method="post" enctype="multipart/form-data" name="form1"> 请选择上传的图片
- <input type="file" name="filename" id="filename" onchange="ok()">
- <!-- MAX_FILE_SIZE must precede the file input field -->
- <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
- <input type="submit" name="Submit" value="上传">
- </form>
- </td>
- </tr>
- </table>
- <font color="red">注意:请上传120*45像素的GIF或者jpg格式的logo图片</font><br/>
- logo预览:<img id="logoimg" src="images/bg-02.gif"/>
- </body>
- </html>
- uploadf.php
- <?php
- if(!emptyempty($_GET[submit]))
- {
- $path="uploadfiles/pic/"; //上传路径
- //echo $_FILES["filename"]["type"];
- if(!file_exists($path))
- {
- //检查是否有该文件夹,如果没有就创建,并给予最高权限
- mkdir("$path", 0700);
- }//END IF
- //允许上传的文件格式
- $tp = array("image/gif","image/pjpeg","image/png");
- //检查上传文件是否在允许上传的类型
- if(!in_array($_FILES["filename"]["type"],$tp))
- {
- echo "格式不对";
- exit;
- }//END IF
- if($_FILES["filename"]["name"])
- {
- $file1=$_FILES["filename"]["name"];
- $file2 = $path.time().$file1;
- $flag=1;
- }//END IF
- if($flag) $result=move_uploaded_file($_FILES["filename"]["tmp_name"],$file2);
- //特别注意这里传递给move_uploaded_file的第一个参数为上传到服务器上的临时文件
- if($result)
- {
- //echo "上传成功!".$file2;
- echo "<script language='javascript'>";
- echo "alert(\"上传成功!\");";
- //echo " location='add_aaa.php?pname=$file2'";
- echo "</script>";
- echo("<input type=\"button\" name=\"Submit\" value=\"确定\" onClick=\"window.opener.setFile('".$file2."');window.close();\">");
- echo "图片名称:".$file2;
- }//END IF
- } else {
- echo "file is null!";
- }
- ?>
调用示例文件,testUpload.htm,代码如下:
- <!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>上传图片</title>
- <script>
- function setFile(f1){
- document.frm.logoImg.value=f1;
- }
- </script>
- </head>
- <body>
- <table border="0" align="center" cellpadding="0" cellspacing="0">
- <tr>
- <td height="45" align="center" valign="middle">
- <form action="#" method="post" name="frm"> 请选择上传的图片
- <input name="regAd.logoImg" id="logoImg" type="text" size="30"/>
- <label style="cursor:hand" onClick="window.open('upimg.htm','上传图片','height=200,width=400,top=200,left=200')">上传图片</label><br/>
- </form>
- </td>
- </tr>
- </table>
- </body>
- </html>
此程序不足之处分析,上传预览功能,代码如下:
- function $(id){
- return document.getElementById(id);
- }
- function ok(){
- $("logoimg").src = $("filename").value;
- }//开源软件:phpfensi.com
这段代码其实就是一个鸡肋了,在有一些浏览器下是不兼容了,但不会影响到图片上传功能.
程序安全:对于在上传处我们并未进行数据大小限制与程序上传文件类型进行限制,这样可以利用它来上传一些像php文件,这样你的网站就不安全了.
Tags: PHP图片上传 PHP上传预览
- 上一篇:Tornado文件图片上传例子
- 下一篇:php多文件上传 多图片上传程序代码
相关文章
- ·一款简单PHP图片上传类带图片显示代码(2014-09-09)
- ·php文件图片上传类(2014-09-09)
- ·PHP图片、文件批量上传代码(2015-04-11)
- ·php实现多图片上传程序代码(2015-12-24)
- ·PHP实现图片上传并压缩(2021-06-30)
- ·php实现图片上传并进行替换操作(2021-07-14)
- ·php基于CodeIgniter实现图片上传、剪切功能(2021-08-05)
- ·详解PHP素材图片上传、下载功能(2021-11-17)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)