梦入琼楼寒有月,行过石树冻无烟

PHP 文件上传

在当今时代技术发展旅程中,文件的上传与下载已经成为了一个非常常用的功能,如个人资料中的设置个人头像,也需要用到文件的上传操作。在比如QQ.COM的官网,需要用到文件下载的操作与应用。

PHP 文件上传

获取上传后的文件信息
$_FILES

$_FILES是一个二维数组,主要用途是当文件上传后,依然可以使用该函数获取文件的信息;

文件的上传类型
$FILES['文件’][‘类型’]

文件的常用上传类型主要可以分为以下几种:

ID DA FA
text/plain 表示普通文本文件 文件
text/html 表示HTML文件
image/gif 表示GIF图片 图片
image/pjpeg 表示JPEG图片
iamge/jpeg 用于表示JPEG图片[^Fivefox浏览器]
application/msword 表示Word文件 格式文件
application/pdf 表示PDF文件
application/x-zip-compressed 表示ZIP格式的压缩文件
application/octet-stream 表示二进制流文件[^如EXE、RAR、视频等文件]
audio/mpeg 表示mp3格式音频文件 音频文件
文件上传在服务器时的临时存储名
$FILES[‘文件’][‘临时名称’]

当文件被上传后,文件存储与服务器端,此时我们可以为其增加临时名称,可以用$FILES[‘文件’][‘临时名称’]来解决

以上传的文件大小
$FILES[‘文件’][‘大小’]

已上传的文件大小,单位即为字节。

错误消息代码
$FILES[‘文件’][‘erre’]

在错误信息代码中,值为0 将表示没有错误发生,即文件上传成功值为1即代表上传的文件超过了php.ini文件中upload_max_filesize选项限制的值值为2则表示上传文件的大小超过了HTML表单中规定的最大值值为3则表示文件中只有部分被上传值为4则表示没有文件被上传,而最后值为5则表示上传文件大小为0如下表:

ID DA FA
0 表示没有错误发生,即文件上传成功
1 传的文件超过了php.ini文件中upload_max_filesize选项限制的值
2 上传文件的大小超过了HTML表单中规定的最大值
3 文件中只有部分被上传
4 没有文件被上传
5 文件大小为0
临时存储
move_uploaded_file()

当文件上传结束后,将会默认的存储在临时目录中,这时候必须将其从临时目录中删除或移动到其他地方,无论是否上传成功,都将当脚本执行完后删除;

判断文件是否通过HTTP POST上传
is_uploaded_file()

为避免不发分子或恶意用户是否通过HTTP POST上传,所以PHP的is_uploaded_file()函数进行判断,诺通过HTTP POST上传的则返回TRUE,否则返回FALSE;

文件上传例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
</head>
<body>
<form enctype="multipart/form-data" action="" method="post">
<input type="file" name="myFile">
<input type="submit" name="up" value="上传文件">
</form>

<?php
if (isset($_POST['up'])) {
// 判断文件格式是否为JPEG
if ($_FILES['myFile']['type'] == "image/gif") {
if ($_FILES['myFile']['error'] > 0) {
// 临时文件名称
echo "错误:",$_FILES['myFile']['error'];
} else {
// 临时文件名
$tmp_filename = $_FILES['myFile']['tmp_name'];

// 上传的文件名
$filename = $_FILES['myFile']['name'];

// 上传后的文件未知
$dir = $_SERVER['DOCUMENT_ROOT']."/text/";

// 判断是否通过HTTPS POST上传
if (is_uploaded_file($tmp_filename)) {
// 上传并移动文件
if (move_uploaded_file($tmp_filename, "$dir$filename")) {
echo "文件",$filename,"上传成功";

// 输出文件的大小
echo "文件大小为:".($_FILES['myFile']['size']/1024)."KB";
} else {
echo "文件上传失败";
}
}
}
} else {
echo "文件错误,非GIF格式文件";
}
}
?>
</body>
</html>

文件的下载

header()函数主要作用就是向浏览器发送正确的HTTP报头,报头指定了网页的内容和类型,页面属性等信息。header()函数的功能主要用页面跳转指定下载的文件类型 以及文件下载如下:

header()支持表
ID DA FA
Location() 跳转到指定页面 页面跳转
Content-type: 指定下载的文件类型 下载文件类型
readfile() 文件下载 文件下载

文件处理函数

计算文件大小
filesize()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
</head>
<body>
<?php
$file = "D:/Program Files (x86)/phpStudy/WWW/text/1593173883_1490.gif";
$num = filesize($file);
echo "$num/1024KB";
?>
</body>
</html>
判断文件是否存在
file_exists()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
</head>
<body>
<?php
$file = "D:/Program Files (x86)/phpStudy/WWW/text/1593173883_1490.gif";
if (file_exists($file)) {
echo "文件存在";
} else {
echo "文件不存在";
}
?>
</body>
</html>
文件删除

在php之中,可使用unlink()函数进行删除不需要的文件,如果删除成功则返回TRUE、否则删除失败则返回FALSE;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
</head>
<body>
<?php
$file = "D:/Program Files (x86)/phpStudy/WWW/text/1593173883_1490.gif";
// 删除文件
unlink($file);

// 检测文件是否存在
if (file_exists($file)) {
echo "文件存在";
} else {
echo "文件不存在";
}
?>
</body>
</html>
ID DA FA
$_FILES 主要用途是当文件上传后,依然可以使用该函数获取文件的信息; 获取上传后文件信息
$FILES['文件’][‘类型’] 设置当前文件上传的类型 上传类型
文件类型可包括以下几种:
text/plain 表示普通文本文件 文件
text/html 表示HTML文件
image/gif 表示GIF图片 图片
image/pjpeg 表示JPEG图片
iamge/jpeg 用于表示JPEG图片[^Fivefox浏览器]
application/msword 表示Word文件 格式文件
application/pdf 表示PDF文件
application/x-zip-compressed 表示ZIP格式的压缩文件
application/octet-stream 表示二进制流文件[^如EXE、RAR、视频等文件]
audio/mpeg 表示mp3格式音频文件 音频文件
$FILES[‘文件’][‘临时名称’] 临时存放名称 文件上传在服务器时的临时存储名
$FILES[‘文件’][‘大小’] 已上传的文件大小,单位即为字节。 文件的上传大小
$FILES[‘文件’][‘erre’] 在错误信息代码中有如下代码: 错误代码
错误代码:
0 表示没有错误发生,即文件上传成功
1 传的文件超过了php.ini文件中upload_max_filesize选项限制的值
2 上传文件的大小超过了HTML表单中规定的最大值
3 文件中只有部分被上传
4 没有文件被上传
5 文件大小为0
move_uploaded_file() 当文件上传结束后,将会默认的存储在临时目录中,这时候必须将其从临时目录中删除或移动到其他地方,无论是否上传成功,都将当脚本执行完后删除; 临时存储
is_uploaded_file() 判断文件是否通过HTTP POST上传 HTTP POST
filesize() 计算文件大小 文件处理函数
file_exists() 判断文件是否存在
unlink() 删除文件
⬅️ Go back