GET请求和POST请求
文件上传遵循的流程:
选取文件提交 ==> 存入服务器暂存区 ==> 有后续操作后存入到服务器
步骤1:在表单中提交
☆ 在php中文件上传必须得是post请求
☆ 必须给表单设置enctype属性
method="post" enctype="multipart/form-data">文件选择:
步骤2:在php代码中接收
☆ 1. 在php中,上传之后的相关信息都存储在$_FILES 超全局变量中
☆ 2.使用一个方法来实现文件的移动,否则文件将在程序结束后被自动遗弃
☆ 3.move_uploaded_file(源文件的全路径, 目标文件的全路径)
☆ 4.文件夹是手动创建的
// 在php中,上传之后的相关信息都存储在 $_FILES 超全局变量中
print_r($_FILES)
// 使用一个方法来实现文件的移动,否则文件将在程序结束后被自动遗弃
// move_uploaded_file(源文件的全路径, 目标文件的全路径)
// 文件夹是手动创建的
move_uploaded_file($_FILES["myFile"]["tmp_name"], "./upload/temp.png")
?>
补充说明(1)
由于发送的是post请求,结果文件一打开的时候就开始了一些操作,发现报错了
所以,在打开文件的时候,还得需要一些判断
// 判断当前的数组是否为空,为空则不进入
if(!empty($_FILES)) {
move_uploaded_file($_FILES["myFile"]["tmp_name"], "./upload/temp.png")
}
?>
// !!!通过表单元素的属性,限制文件上传的格式
// 1, 在表单元素中可以限制
// 2, 在后端进行判断
if(!empty($_FILES)) {
$type = $_FILES["myFile"]["type"];
// ***** strpos(源字符,搜索字符) 可以获取指定字符串在源字符中第一次出现的索引
if(strpos($type, "image/") === 0) {
move_uploaded_file($_FILES["myFile"]["tmp_name"], "./upload/temp.png");
}else {
echo "您选择的不是一张图片";
}
}
?>
文件名称不固定,设置合理的文件名称
// 获取当前文件的名称
$fileName = $_FILES["myFile"]["name"];
// 拼接文件的名称
// move_uploaded_file($_FILES["myFile"]["tmp_name"], "./upload/".$fileName);
// ???? 如果两次都是一次名字,很有可能重名,然后会覆盖之前的文件
// 生成随机数,时间是唯一的
// $myname = time();
// strrchr(源字符串,指定搜索的字符串)
$extension = strrchr($fileName, "."); // 如果是 demo.png , 就能获取到后面的 .png
$myname = time().rand(1000, 9999).$extension; // 得到一个随机的唯一的值, 还带扩展名
?>
上传文件.jpg
补充说明(2)
当上传的文件比较大的时候,会出不来想要的效果
而此时,得到的$_FILES数组中,error指向的值为1
根据查询手册得知,这里的意思指的是,上传的文件超出了大小
如果需要修改大小的范围,需要修改配置文件
strlen.jpg
搜索相关的信息
maxload.jpg
得到对应的位置之后,发现默认为2M的大小
modefieLoad.jpg
修改完毕之后,一定要记得
重启服务器!!!
服务器对每一次post请求传递做了限制,默认为8M
可以修改配置文件,改大对应的值,搜索post_max_size
和上图操作类似 找到 php-ini配置
找到位置后,该变原有的大小
补充说明(3)
同时上传多个文件
在选择的表单元素中加入multiple, 则可以选中多个文件
1.0 如果需要后端服务器的 $_FILES 接收多个文件,则需要在name属性值后面加上[ ]
2.0 实现完成效果
if(!empty($_FILES)) {
// 获取扩展名的数组
$nameArr = $_FILES["myfile"]["name"];
$pathArr = $_FILES["myfile"]["tmp_name"];
foreach($pathArr as $key => $value) {
// 获取唯一的图片名称
$name = time().rand(1000, 9999).strrchr($nameArr[$key], ".");
// 将文件存储到永久目录 move_upload_file
move_upload_file($value, "./upload/".$name);
}
}
?>
作者:羽翼的翼