首页 php教程 php手册 PHP图片上传实例分析[包含预览]

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

May 25, 2016 pm 04:45 PM
文件上传

图片上传与文件上传在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>
<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  src="/static/imghw/default1.png"  data-src="images/bg-02.gif"  class="lazy"  id="logoimg" / alt="PHP图片上传实例分析[包含预览] " >
</body>
</html>
登录后复制

调用示例文件:

testUpload.htm

<?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=&#39;javascript&#39;>";
        echo "alert(\"上传成功!\");";
        //echo " location=&#39;add_aaa.php?pname=$file2&#39;";
        echo "</script>";
        echo ("<input type=\"button\" name=\"Submit\" value=\"确定\" onClick=\"window.opener.setFile(&#39;" . $file2 . "&#39;);window.close();\">");
        echo "图片名称:" . $file2;
    } //END IF
    
} else {
    echo "file is null!";
}
?>
调用示例文件:
testUpload.htm
<!DOCTYPE HTML>
<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(&#39;upimg.htm&#39;,&#39;上传图片&#39;,&#39;height=200,width=400,top=200,left=200&#39;)">上传图片</label><br/>
  </form>
 </td> 
  </tr> 
</table>
</body>
</html>
登录后复制

此程序不足之处分析

上传预览功能

function $(id) {
	return document.getElementById(id);
}
function ok() {
	$("logoimg").src = $("filename").value;
}
登录后复制

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

程序安全

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

本文链接:

收藏随意^^请保留教程地址.

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何利用Laravel实现文件上传和下载功能 如何利用Laravel实现文件上传和下载功能 Nov 02, 2023 pm 04:36 PM

如何利用Laravel实现文件上传和下载功能

如何在 Golang 中使用 gRPC 实现文件上传? 如何在 Golang 中使用 gRPC 实现文件上传? Jun 03, 2024 pm 04:54 PM

如何在 Golang 中使用 gRPC 实现文件上传?

实现Workerman文档中的文件上传与下载 实现Workerman文档中的文件上传与下载 Nov 08, 2023 pm 06:02 PM

实现Workerman文档中的文件上传与下载

如何解决Java文件上传异常(FileUploadException) 如何解决Java文件上传异常(FileUploadException) Aug 18, 2023 pm 12:11 PM

如何解决Java文件上传异常(FileUploadException)

PHP文件上传指南:如何使用move_uploaded_file函数处理上传文件 PHP文件上传指南:如何使用move_uploaded_file函数处理上传文件 Jul 30, 2023 pm 02:03 PM

PHP文件上传指南:如何使用move_uploaded_file函数处理上传文件

Laravel中的文件上传和处理:管理用户上传的文件 Laravel中的文件上传和处理:管理用户上传的文件 Aug 13, 2023 pm 06:45 PM

Laravel中的文件上传和处理:管理用户上传的文件

如何在 Golang 中实现拖放文件上传? 如何在 Golang 中实现拖放文件上传? Jun 05, 2024 pm 12:48 PM

如何在 Golang 中实现拖放文件上传?

用Golang函数简化文件上传处理 用Golang函数简化文件上传处理 May 02, 2024 pm 06:45 PM

用Golang函数简化文件上传处理

See all articles