景初

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

    在WEB开发中,经常会遇到从客户端上传文件到服务器端的问题。通常,文件上传使用的是HTTP的POST方式,使用POST方式传递文件到服务器端。要完成文件上传处理,首先要定义HTML表单的enctype属性为"multipart/form-data",如以下代码所示。

<form enctype="multipart/form-data" action="somefile.php" method="POST">

    只有这样的表单,才能确保文件可以提交并上传。其中,somefile.php要替换为一个可以处理文件上传的真实PHP文件。

<html>
<head><title>3-6</title>
</head>
<body>
<form enctype="multipart/form-data" action="3-7.php" method="POST">
upload<input name="myfile" type="file" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

    在PHP程序中,使用全局变量$_FILES处理文件上传。$_FILES是一个数组,包含了要上传的文件的信息。相关数组的内容:

$_FILES['myfile']['name']表示客户端文件的原始名称,即要上传的文件的文件名。其中myfile就是在上述代码中定义的input元素的name 属性的值:<input name="myfile" type="file" />

$_FILES['myfile']['type']表示上传文件的类型。

$_FILES['myfile']['size']表示已上传文件的大小,单位为字节。

$_FILES['myfile']['tmp_name']表示文件上传后,在服务器端存储的临时文件名。

$_FILES['myfile']["error"]表示和文件上传的相关错误信息。

    文件提交后,一般会被存储到服务器的默认临时目录中,可以通过修改php.ini中的upload_tmp_dir项,修改为其他路径。使用函数move_uploaded_file()将上传的文件移到指定的目录下。该函数的原型如下所示。第一个参数filename指合法的上传文件,第二个参数destination是移动后的目标文件。如果上传的文件不合法,或由于某种原因无法移动文件。该函数的原型如下所示。第一个参数filename指合法的上传文件,第二个参数destination是移动后得目标文件。如果上传文件不合法,或由于某种原因无法移动文件,该函数会返回FALSE。

move_uploaded_file(filename,destination)

<?php

 $upload_path=$_SERVER['DOCUMENT_ROOT']."/upload/";
 $dest_file=$upload_path.basename($_FILES['myfile']['name']);

 if(move_uploaded_file($_FILES['myfile']['tmp_name'],$dest_file))
 {
 	echo "文件已上传至服务器根目录的upload目录下";
 }
 else
 {
 	echo "文件上传时发生了一个错误".$_FILES['myfile']['error'];
 }
?>



版权声明:本文为博主原创文章,未经博主允许不得转载。

posted on 2014-04-21 11:13  景初  阅读(124)  评论(0编辑  收藏  举报