在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'];
}
?>
版权声明:本文为博主原创文章,未经博主允许不得转载。