<?php
function upload(){
//进行文件信息判断
if (!isset($_FILES['avatar'])) {
// 客户端根本没有文件域
$GLOBALS['massage']='请选择文件上传';
return;
}
// 接收到文件域信息(关联数组)
$avatar=$_FILES['avatar'];
if($avatar['error']!==UPLOAD_ERR_OK){
// 没有接收到上传的文件
$GLOBALS['massage']='上传失败';
return;
}
// 接收到了文件
// 将文件从临时文件目录移动到网站的根目录范围之内
$source=$avatar['tmp_name'];//源文件在哪里
// 上传的根目录,此目录必须存在
$target='./upload/'.$avatar['name'];//目标放在哪里
$moved=move_uploaded_file($source, $target);
if (!$moved) {
//移动文件失败
$GLOBALS['massage']='上传失败';
return;
}
//成功
$GLOBALS['massage']='上传成功';
}
if ($_SERVER["REQUEST_METHOD"]==='POST') {
// 接收文件,使用一个叫$_FILES的超全局成员
upload();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<!--method必须为post enctype="multipart/form-data" -->
<form action="<?php echo($SERVER['PHP_SELF']) ?>" method="post" enctype="multipart/form-data" >
<input type="file" name="avatar" >
<button>上传</button>
<!-- 打印上传信息 -->
<?php if (isset($massage)): ?>
<p><?php echo $massage; ?></p>
<?php endif ?>
</form>
</body>
</html>
注意一:我们这样的文件上传只能最大传单个文件2M,请求提交数据大小8M,如果需要更改需要修改php.ini文件。
1.打开PHP文件找到php.ini-development,复制一份,改名为php.ini
2.修改单个文件大小:打开我们复制的php.ini文件,修改 upload_max_filesize 的值
3.修改请求提交数据大小:post_max_size 的值
4.到Apache/conf/hostd.conf文件中说明此文件所在路径(例如博主的php.ini文件在C盘下的php文件夹下)
#告诉PHP php.ini文件所在的路径
PHPIniDir C:/php
注意二:我们上传的文件到了另一个文件夹中可能出现无法查看到文件的具体内容,无法打开文件,没有权限
解决方案:1.右击文件属性,给文件相应的权限,改单个文件就可以打开。
2.修改php.ini中upload_tmp_dir 的值依然是php文件目录
具体可参考:https://wenku.baidu.com/view/ca97f7b9f242336c1fb95e8f.html
注意三:上传文件出现PHP Forbidden You don't have permission to access 没权限问题
去php.ini 修改error_reporting = E_ALL & ~E_NOTICE