使用$_FILES获取上传文件信息 (PHP)

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

运行截图:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值