PHP图片上传实例分析[包含预览]

前期需要了解的知识点

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(!empty($_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;
    }

这段代码其实就是一个鸡肋了,在有一些浏览器下是不兼容了,但不会影响到图片上传功能。

程序安全

对于在上传处我们并未进行数据大小限制与程序上传文件类型进行限制,这样可以利用它来上传一些像php文件,这样你的网站就不安全了哦。

时间: 2024-08-02 05:22:34

PHP图片上传实例分析[包含预览]的相关文章

Javascript图片上传前的本地预览实例_javascript技巧

图片的上传预览功能主要用于图片上传前的一个效果的预览,目前主流的方法主要有js,jquery与flash实现,但我们一般都会使用js来实现图片上传预览功能,下面来看一个例子. 原理: 分为两步:当上传图片的input被触发并选择本地图片之后获取要上传的图片这个对象的URL(对象URL):把对象URL赋值给事先写好的img标签的src属性即可把图片显示出来. 在这里,我们需要了解Javascript里File对象.Blob对象和window.URL.createObjectURL()方法. Fil

周末大放送网站图片上传,水印,预览,截图

    周末闲着没事,将网站中经常用到的对图片的操作做了一个总结,方便以后回顾,这里将一天的成果,贴出来,希望能帮到大家.     首先是swfupload方式的无刷新上传,关于怎么配置,按照demo 的写法,我相信只要你不是太笨,都能成功.     关于swfupload你可以去网上下,也可以点这里下载:SWFUpload_v250_beta_3_samples.rar    项目结构:               上传代码: 前台上传页面,你可以根据需要建html页,也可以建webform.

使用swfupload实现网站图片上传,水印,预览和截图

周末闲着没事,将网站中经常用到的对图片的操作做了一个总结,方便以后回顾,这里将一天的成果,贴出来,希望能帮到大家. 首先是swfupload方式的无刷新上传,关于怎么配置,按照demo 的写法,我相信只要你不是太笨,都能成功. 关于swfupload你可以去网上下,也可以点这里下载:SWFUpload_v250_beta_3_samples.rar 项目结构: 上传代码: 前台上传页面,你可以根据需要建html页,也可以建webform.这里用一般处理程序来对照片进行处理,加水印,修改文件名等操

求解 firefox ie7 在上传图片的时候 , 在上传之前,我想预览图片,可是做不到,谁能帮助我呀??

问题描述 100分求解firefoxie7在上传图片的时候,在上传之前,我想预览图片,可是做不到,谁能帮助我呀??在ie6里面,我可以把本地的文件地址,直接给img的src属性,此种做法在ie7和firefox里面不能用,请问谁有解决方案谢谢 解决方案 解决方案二:http://taogi.com/webpub/imglist.aspx?c=1&t=3&p=1呵呵,上面这个页面有一个上传前预览的例子,自己去参考一下,把代码扒下来自己用^_^解决方案三:顶下解决方案四:<scriptl

Symfony2使用第三方库Upload制作图片上传实例详解_php实例

本文实例分析了Symfony2使用第三方库Upload制作图片上传的方法.分享给大家供大家参考,具体如下: 我们在应用程序或者网站的个人资料里一般都有设置头像的功能,这一章我们在Symfony2里用第三方的一个比较有名Upload库来制作上传图片的功能. 一.安装第三方库 1.在composer.json文件中的"require"中加入 "codeguy/upload": "*" 2.运行指令安装 composer update 二.编码 1.编

php多个文件及图片上传实例详解_php技巧

本文实例讲述了php多个文件及图片上传的方法.分享给大家供大家参考.具体实现方法如下: 多个文件上传是在单文件上传的基础上利用遍历数组的方式进行遍历表单数组然后把文件一个个上传到服务器上了,下面就来看一个简单多个文件上传实例 多个文件上传和单独文件上传的处理方式是一样的,只需要在客户端多提供几个类型为"file"的输入表单,并指定不同的"name"属性值.例如,在下面的代码中,可以让用户同时选择三个本地文件一起上传给服务器,客户端的表单如下所示: 复制代码 代码如下

ASP.NET图片上传实例(附源码)_实用技巧

由于需要图片上传的功能,所以花了一些时间网上找相关资料终于搞定,效果图如下: 下面的是解决方案截图和上传的图片截图: 下面是代码:1.界面代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UploadPic.aspx.cs" Inherits="Pic_Try.UploadPic" %> <!DOCTYPE html PUBLIC &qu

asp.net图片上传实例

 网站后台都需要有上传图片的功能,下面的例子就是实现有关图片上传.缺点:图片上传到本服务器上,不适合大量图片上传 第一.图片上传,代码如下: xxx.aspx  代码如下:  <td class="style1">                  <asp:FileUpload ID="FileUpload1" runat="server"  />                 <asp:Button ID=&q

asp.net图片上传实例_实用技巧

第一.图片上传,代码如下:xxx.aspx 复制代码 代码如下:  <td class="style1">                 <asp:FileUpload ID="FileUpload1" runat="server"  />                <asp:Button ID="Button1" runat="server" Text="上传