我来说说这题的思路吧,首先是用phpstudy开了一个网站,我这边的地址是D:\phpstudy_pro\WWW,也就是我们在网站上面输入的localhost即表示这个路径.
那我们要做的就是能够在网站上上传本地电脑的文件,也就是从客户端上传文件到服务端上.每次开启服务端的第一件事就是打开phpstudy,开启Apache服务.然后就可以开始写代码了.整体的思路如下:
1.创建php文件,写好html代码,注意的是表单元素中的提交方式为post,那post和get的最大区别就是post是接收请求体的数据,而get是接收url地址问号后的参数数据,一般工作中默认使用post,如果不填,则默认get;表单属性action后面之间输出一个php标签,
S
E
R
V
E
R
[
′
P
H
P
S
E
L
F
′
]
指
的
是
指
向
当
前
页
面
本
身
。
m
u
l
t
i
p
a
r
t
/
f
o
r
m
−
d
a
t
a
是
指
表
单
数
据
有
多
部
分
构
成
,
既
有
文
本
数
据
,
又
有
文
件
等
二
进
制
数
据
的
意
思
。
2.
判
断
表
单
提
交
方
式
是
否
为
p
o
s
t
,
是
则
打
印
_SERVER['PHP_SELF']指的是指向当前页面本身。multipart/form-data是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据的意思。 2.判断表单提交方式是否为post,是则打印
SERVER[′PHPSELF′]指的是指向当前页面本身。multipart/form−data是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据的意思。2.判断表单提交方式是否为post,是则打印_FILES,
F
I
L
E
S
表
示
的
是
一
个
上
传
文
件
的
关
联
数
组
。
3.
判
断
数
组
中
的
a
v
a
t
a
r
是
否
存
在
,
获
取
数
组
中
的
a
v
a
t
a
r
,
判
断
a
v
a
t
a
r
中
的
e
r
r
o
r
是
不
是
存
在
错
误
,
如
果
为
0
,
则
没
错
,
继
续
往
下
写
,
将
源
文
件
地
址
导
入
新
目
录
中
,
打
印
。
其
中
指
的
注
意
的
是
_FILES表示的是一个上传文件的关联数组。 3.判断数组中的avatar是否存在,获取数组中的avatar,判断avatar中的error是不是存在错误,如果为0,则没错,继续往下写,将源文件地址导入新目录中,打印。 其中指的注意的是
FILES表示的是一个上传文件的关联数组。3.判断数组中的avatar是否存在,获取数组中的avatar,判断avatar中的error是不是存在错误,如果为0,则没错,继续往下写,将源文件地址导入新目录中,打印。其中指的注意的是message是用来接收判断的提示的,$message必须作为一个全局变量才可以访问到。
其他看代码吧!
<?php
function upload(){
if(!isset($_FILES['avatar'])){ //判断是否存在avatar,如果不存在,说明文件没有上传
$GLOBALS['message']= '请上传文件';
return;
}
$avatar=$_FILES['avatar'];
//var_dump($avatar);
// avatar => array(5) {
// ["name"]=>
// string(10) "彩照.png"
// ["type"]=>
// string(9) "image/png"
// ["tmp_name"]=>
// string(22) "C:\Windows\php7413.tmp" //绝对路径
// ["error"]=>
// int(0)
// ["size"]=>
// int(63869)
// }
if($avatar['error']!==UPLOAD_ERR_OK){ //判断数组中的error是否为0,如果不为0,说明上传错误
$GLOBALS['message']='上传失败';
return;
}
//接收到文件,将文件从临时目录移动到网站范围之内,返回的是布尔值
$moved=move_uploaded_file($avatar['tmp_name'],'./uploads/'.$avatar['name']);//需要创建一个空文件夹存放照片
if(!$moved){
$GLOBALS['message']='上传失败';
return;
}
$GLOBALS['message']='上传成功';
}
if($_SERVER['REQUEST_METHOD']===POST){
//var_dump($_FILES);//打印成数组
upload();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>文件上传服务端处理</title>
</head>
<body>
<!-- 表单的编码方式设置为多部分的表单数据 -->
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
<input type="file" name="avatar">
<button>提交</button>
<?php if (isset($message)): ?>
<p><?php echo $message; ?></p>
<?php endif ?>
</form>
</body>
</html>