php $_FILES处理文件上传

众所周知,文件上传在一些网站应用中是必不可少的一部分。比如个人博客上传个性头像,一些论坛分享好的学习资料等,这就涉及到使用表单处理文件上传的知识,在php中 我们可以使用$_FILES这个全局数组来处理。下面就看看基本的文件上传处理部分。首先要说明的,能够上传文件必定是一个安全隐患,所以在开发这部分功 能时,一定要注意网站的安全性。而本文所探讨的只是基本的文件上传部分,关于安全性这方面考虑的较少,希望在日后的高级应用中可以学习的到。

PHP预定义变量这一节我们对一些预定义变量进行了一些大概的学习,其中就有$_FILES这个全局变量,那么现在再来详细的了解关于这个全局量的知识,因为我在处理文件上传时,要使用到它的相关功能。

$_FILES参数详解:
$_FILES["file"]["name"] – 被上传文件的名称
$_FILES["file"]["type"] – 被上传文件的类型
$_FILES["file"]["size"] – 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] – 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] – 由文件上传导致的错误代码

$_FILES["file"]["error"]中的["error"]值情况:
UPLOAD_ERR_OK
0:没有错误发生,文件上传成功
UPLOAD_ERR_INI_SIZE
1:上传的文件超过了 php.ini中upload_max_filesize(默认情况为2M) 选项限制的值
UPLOAD_ERR_FORM_SIZE
2:上传文件的大小超过了 HTML表单中MAX_FILE_SIZE选项指定的值
UPLOAD_ERR_PARTIAL
3:文件只有部分被上传
UPLOAD_ERR_NO_FILE
4:没有文件被上传
5:传文件大小为0
下面我们就来看看最基本的文件上传:

<html>
<body>
<form action=”upload-file.php” method=”post”
enctype=”multipart/form-data”>
<label for=”file”>文件名:</label>
<input type=”file” name=”file” id=”file” />
<br />
<input type=”submit” name=”submit” value=”提交” />
</form>
</body>
</html>

这个HTML页面如下图:

upload-file.php代码如下:

<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo “错误: ” . $_FILES["file"]["error"] . “<br />”;
  }
else
  {
  echo “文件名: ” . $_FILES["file"]["name"] . “<br />”;
  echo “类型: ” . $_FILES["file"]["type"] . “<br />”;
  echo “大小: ” . ($_FILES["file"]["size"] / 1024) . ” Kb<br />”;
  echo “存储位置: ” . $_FILES["file"]["tmp_name"];
  }
?>

我们随便上传一个word文件,看看处理结果如何:

文件名: css.doc
类型: application/msword
大小: 81.5 Kb
存储位置: C:\WINDOWS\temp\php7D.tmp

可以看到,这个文件被保存到C:\WINDOWS\temp\临时目录下,你可能想去看看在这个目录是否存在这个文件,但结果是:没有!为什么呢? 因为php在执行完这个脚本后,把它生成的文件又删除了,所以在上传之后还要进一步处理。另外还随便提一下,在windows下,php所生成的临时文件 如php7D.tmp是有规律的,也就是说在下一次通过表单上传的文件应该像这样:php7E.tmp
为了保存我们上传的文件,要使用move_uploaded_file函数。在你的upload-file.php文件同目录创建一个upload文件夹。下面再来看看上面那个示例:

<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo “错误: ” . $_FILES["file"]["error"] . “<br />”;
  }
else
  {
  echo “文件名: ” . $_FILES["file"]["name"] . “<br />”;
  echo “类型: ” . $_FILES["file"]["type"] . “<br />”;
  echo “大小: ” . ($_FILES["file"]["size"] / 1024) . ” Kb<br />”; 
  }
 if (file_exists(”upload/” . $_FILES["file"]["name"]))
    {
      echo $_FILES["file"]["name"] . ” 文件已经存在. “;
    }
else
    {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      “upload/” . $_FILES["file"]["name"]);
      echo “文件已经被存储到: ” . “upload/” . $_FILES["file"]["name"];
    }

?>

再来看看结果:

文件名: css.doc
类型: application/msword
大小: 81.5 Kb
文件已经被存储到: upload/css.doc

经过这一步的处理,在我们所指定的地方(upload)就可以得到我们上传的文件。到这里,最基本的文件上传就结束了。还说一下,我们在上传的时候一定要考虑文件的类型,要考虑文件的大小等。关于这些方面随着学习的深入再来介绍吧

时间: 2024-10-12 23:49:09

php $_FILES处理文件上传的相关文章

PHP文件上传error的错误类型 - $_FILES[&#39;file&#39;][&#39;error&#39;]

假设文件上传字段的名称img,则: $_FILES['img']['error']有以下几种类型 1.UPLOAD_ERR_OK 其值为 0,没有错误发生,文件上传成功. 2.UPLOAD_ERR_INI_SIZE 其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize选项限制的值. 3.UPLOAD_ERR_FORM_SIZE 其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值. 4.UPLOAD_ERR_PARTIA

php文件上传之$_FILES全局变量用法介绍

我们来看看files的变量的用法 $_FILES超级全局变量很特殊,他是预定义超级全局数组中唯一的二维数组.其作用是存储各种与上传文件有关的信息,这些信息对于通过PHP脚本上传到服务器的文件至关重要.此函数中总共有5项:1.$_FILES["userfile"]["error"]$_FILES["userfile"]["error"]数组值提供了与上传尝试结果有关的重要信息.总共有5个不同的返回值,其中一个表示成功的结果,另外

php 文件上传 $_FILES 错误码

假设文件上传字段的名称file_name,则: $_FILES['file_name']['error']有以下几种类型 1.UPLOAD_ERR_OK 其值为 0,没有错误发生,文件上传成功. 2.UPLOAD_ERR_INI_SIZE 其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize选项限制的值. 3.UPLOAD_ERR_FORM_SIZE 其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值. 4.UPLOA

PHP 文件上传之常见问题($_FILES为空,move_uploaded_file()函数报错)

$_FILES数组为空 1.检查form表单 1.1 是否添加enctype="multipart/form-data"属性, 1.2 是否使用post发送方式 检查PHP配置文件php.ini 如果不知道php.ini文件在什么位置,可以在当前PHP文件中输入echo phpinfo(); 然后在浏览器中查看PHP版本信息,如下图所示即为php.ini存储位置,然后在命令窗口打开( vi ). 2.1查看file_uploads属性是否为on 在命令模式下输入?file_upload

uploadify插件实现多文件上传

前台HTML代码: <div class="control-group" id="title-control-group"> <label class="control-label"><?=_('关于图片(*)')?></label> <div class="controls"> <div><input id="about_file_upl

php简单文件上传类

<?php header("Content-Type:text/html; charset=utf-8"); if($_POST['submit']){ $upfiles = new Upload(); $upfiles->upload_file(); } class Upload{ /*作者:mckee 来自:www.phpddt.com*/ public $upload_name; //上传文件名 public $upload_tmp_name; //上传临时文件名 p

ajax结合文件上传类进行多文件的单个上传

今天做项目的时候碰见一个问题:之前一个同事离职之前做了一个网站,有一个上传商品详细图片的功能,当时已经完成,但是由于后期程序的有更改以及更改的程序员的水平也是参差不齐,最后导致程序bug很多,由于当时用的是一个框架,最终也没找到说明文档,后来我就重新写了一个结合ajax上传文件的upload.classs.php虽然界面欠缺美观,但是通俗易懂好维护. //首先是页面. index.php <!DOCTYPE html> <html lang="en"> <

JQuery Uploadify3.2 + SpringMVC 文件上传

1.引入头文件(jQuery放前面,而且不能有多个JQuery) <script type="text/javascript" src="js/jquery-1.6.2.js"></script> <link rel="stylesheet" type="text/css" href="js/uploadify/uploadify.css"> <script typ

PHP核心编程--文件上传(包含多文件上传)

一.单文件上传 图片上传界面: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form name='frm'action="./uploadSave.php" method="p