PHP文件域上传文件

PHP中使用文件域上传文件,需要几个步骤,首先先判断有无文件域,然后判断是否选择了文件,最后判断文件是否上传成功。

需要注意的是 表单中有文件域,必须将method设置为post, enctype设置为multipart/form-data

在文件上传时会给服务端以数组的形式返回几个值,如下:

//array(5) {
    //  ["name"]=>
    //  string(25) "mmexport1534732827710.jpg"
    //  ["type"]=>
    //  string(10) "image/jpeg"
    //  ["tmp_name"]=>
    //  string(26) "C:\Windows\Temp\phpD9E.tmp"
    //  ["error"]=>
    //  int(0)
    //  ["size"]=>
    //  int(145606)
    //}

其中’'name"为上传文件名,"type"为上传文件类型,"tmp_name"为上传文件后所存放的路径,"error"为上传文件的错误问题,"size"为上传文件的大小。

具体代码如下:

<?php 
function upload() {
    if (!(isset($_FILES['avatar']))) {
    	//是否有文件域
        $GLOBALS['message'] = '没有上传文件';
        return;
    }
    $avatar = $_FILES['avatar'];
    var_dump($avatar);
    if ($avatar['error']!==UPLOAD_ERR_OK) {
    	//服务端没有接受到上传的文件
    	 $GLOBALS['message'] = '上传失败';
    	 return;
    }
    //接收到了文件
    //将文件从临时目录移动到网站范围内
    $source=$avatar['tmp_name'];   //源文件路径
    $target='./uploads/' . $avatar['name'];    //目标路径
    //==>./uploads/mmexport1534732827710.jpg
    $moved=move_uploaded_file($source, $target);
    if (!$moved) {
    	 $GLOBALS['message'] = '上传失败';
    	 return;
    }
    //移动成功===>上传成功
     $GLOBALS['message'] = '上传成功';

}
if ($_SERVER['REQUEST_METHOD']==='POST') {
	//接受文件  使用一个 叫做$_FILES 超全局成员
	//var_dump($_FILES);
	upload();
}


 ?>

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>文件域</title>
</head>
<body>
	<!-- 表单中有文件域,必须将method设置为post, enctype设置为multipart/form-data -->
	<!-- enctype 默认是urlencoded 格式   key1=value1&key2=value2 -->
	<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
		<input type="file" name="avatar">
		<button>上传</button>
		<?php if (isset($message)): ?>
			<?php echo $message ?>
		<?php endif ?>
	</form>
</body>
</html>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值