在PHP中,文件上传功能的实现步骤:
(1)在网页中上传表单,单击“上传”按钮后,选择的文件数据将发送到服务器。
(2)用$_FILES获取上传文件有关的各种信息。
(3)用文件上传处理函数对上传文件进行后续处理。
说明:
(1)如果表单中有文件上传域,则定义表单时必须设置enctype="multipart/form-data",且必须为POST方式发送。
(2)限制文件大小可在表单中添加一个隐藏域,该隐藏域必须放在文件上传域之前,否则会设置失效。
若文件上传域的name属性值为upfile,则可以使用$_FILES['upfile']访问文件的有关信息。
相关信息:
$_FILES['upfile']['name']; //客户端上传文件的原名称,不包含路径
$_FILES['upfile']['type']; //上传文件的MIME类型
$_FILES['upfile']['tmp_name']; //已上传文件在服务器端保存的临时文件名,包含路径
$_FILES['upfile']['error']; //上传文件出现的错误号,为一个整数
$_FILES['upfile']['size']; //已上传文件的大小,单位为字节
说明:若同时上传多个文件,则上传域的name属性值应为upfile[],此时$_FILES变成三维数组,保存第一个文件名的数组元素是$_FILES['upfile']['name'][0]。
保存上传文件到指定目录
move_uploaded_file(文件原来的路径和文件名,文件的目的路径和文件名);
功能说明:
(1)将上传的文件移动到网站指定目录内,并为它重命名。
(2)检查并确保由第一个参数指定的文件是合法的上传文件(即通过HTTP POST上传机制所上传),这对于网站安全是至关重要的。
代码演示
<?php date_default_timezone_set("PRC");?>
<?php
if(!isset($_POST['submit'])){
echo '
<p>请选择要上传的文件</p>
<form action="#" method="post" enctype="multipart/form-data">
<input type="file" name="upfile"/><br/><br/>
<input type="submit" name="submit" value="上传"/>
</form>
';
}
else{
$upload_dir=getcwd()."\\pic\\"; //getcwd()获取当前脚本目录
if(!is_dir($upload_dir)) //如果目录不存在,则创建
mkdir($upload_dir);
function makefilename(){ //根据上传时间生成上传文件名
$current=getdate();
$filename=$current['year'].$current['mon'].$current['mday'].$current['hours'].$current['minutes'].$current['seconds'].".jpg";
return $filename;
}
$newfilname=makefilename();
$newfile=$upload_dir.$newfilname;
if(file_exists($_FILES['upfile']['tmp_name'])){
move_uploaded_file($_FILES['upfile']['tmp_name'],$newfile);
echo "上传的文件信息:<br/>";
echo "客户端文件名:".$_FILES['upfile']['name']."<br/>";
echo "文件类型:".$_FILES['upfile']['type']."<br/>";
echo "字节大小:".$_FILES['upfile']['size']."<br/>";
echo "上传后文件名:".$newfilname."<br/>"; //显示路径输出$newfile
echo "文件上传成功".'<a href="JavaScript:history.back()">继续上传</a>';
}
else{
echo "上传失败,错误类型".$_FILES['upfile']['error'];
}
}
?>
运行截图: