title: 如何用php实现简单的文件上传功能
author: Love02xp
date: 2020-01-23 08:06:59
category: [编程代码]
tags: [代码,php]
如图所示:点击浏览出现选择文件的对话框,将所选文件上传到保存文件的文件。
<!--more-->
阅读原文
如图所示:点击浏览出现选择文件的对话框,将所选文件上传到保存文件的文件。
关键点:文件上传的图解:
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form method="post" action="chuli.php" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="上传"/>
</form>
</body>
</html>
chuli.php
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
<?php
//读取上传的文件信息,以数组方式返回
$arr = $_FILES["file"];
//var_dump($arr);
//以下为输出内容:此处作为注释写在这,便于理解
//array(5) {
//["name"]=> 文件名称
//string(5) "7.png"
//["type"]=> 文件类型
//string(9) "image/png"
//["tmp_name"]=> 文件临时储存的地方
//string(53) "C:UsersAdministratorAppDataLocalTempphpF626.tmp"
//["error"]=> 报错:上传没错则为0;有错则会提示错误
//int(0)
//["size"]=> 上传文件的大小
//int(18747)
//}
//上传的文件被保存的文件名,images 为同一目录下要保存上传文件的文件名
$filename="./images/".$arr["name"];
//转换格式,将utf-8转为国标
$filename = iconv("UTF-8","gb2312",$filename);
//将文件从临时文件移到保存的文件(核心代码)
move_uploaded_file($arr["tmp_name"],$filename);
?>
到此处便可以实现文件的上传功能;但是如我们所知,实际上文件上传时会有很多要求;诸如文件类型,文件大小,文件名是否重复等
所以要对chuili.php进行修改:
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
<?php
$arr = $_FILES["file"];
//加限制条件
if(($arr["type"]=="image/jpeg" || $arr["type"]=="image/png") && $arr["size"]<1024000 )
{
//临时文件的路径
//$arr["tmp_name"];
$filename = "./images/".time().$arr["name"];
//保存之前判断该文件是否存在
if(file_exists($filename))
{
echo "该文件已存在";
}
else
{
$filename = iconv("UTF-8","gb2312",$filename);
move_uploaded_file($arr["tmp_name"],$filename);
}
}
else
{
echo "上传的文件大小或类型不符合";
}
这样,就基本可以实现文件的上传功能了~~~
要注意的几点:
1、加限制条件从下面几方面加: 1、文件类型 2、文件大小 3、保存的文件名不重复
2、为了防止重复,文件名采取以下措施 1、用户名加时间戳 2、类似网盘,用文件夹分类