淘先锋技术网

首页 1 2 3 4 5 6 7

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; // 得到一个随机的唯一的值, 还带扩展名

?>

R3mABn.jpg 上传文件.jpg

补充说明(2)

当上传的文件比较大的时候,会出不来想要的效果

而此时,得到的$_FILES数组中,error指向的值为1

根据查询手册得知,这里的意思指的是,上传的文件超出了大小

如果需要修改大小的范围,需要修改配置文件

YRNzq2.jpg strlen.jpg

搜索相关的信息

RjEjmi.jpg maxload.jpg

得到对应的位置之后,发现默认为2M的大小

iUVVj2.jpg 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);

}

}

?>

作者:羽翼的翼