php $_FILES处理文件上传(转)

php $_FILES处理文件上传 2011-02-14 17:27:48

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

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

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

$_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
下面咱们就来看看最基本的文件上传:windows

<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

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文件夹。下面再来看看上面那个示例:php7

<?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"];
    }

 

?>app

再来看看结果:函数

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

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

相关文章
相关标签/搜索