用php实现文件的上传

2025-10-28 03:28:56

1、准备工作:开始前要注意,由于上传文件用不到数据库,所以我就不创建数据库了。(其实也会用到数据库,就是要取某个人的头像时候,是需要把这个图片的路径存到数据库中然后取出来显示的。)

然后第一步,你需要先按我的路径进行创建项目路径:在wamp中的www文件夹里面按下面的路径进行创建: tests/up/创建uploads文件夹(用于存放上传后的文件的文件夹),创建index.php(用于点击选择文件后提交的页面),doupload.php(实现文件上传的代码存放)

可以看图片进行创建

用php实现文件的上传

2、第一步:以上的准备工作都做好之后,在index.php里面进行编码。

代码如下:

<!-- 文件上传得form表单 -->

<!-- enctype="multipart/form-data"文件上传必加的文件头!!  action是提交到的文件路径 ,method是提交的方式-->

<form action="doupload.php" method="post" enctype="multipart/form-data">

<!-- 注意下面这个就是实现点击后上传文件的input标签 doupload.php是根据这里设置的name进行获取文件信息的-->

上传图片:<input type="file" name="pic">

<!-- 注意下面这个就是实现点击后提交按钮 -->

<input type="submit" value="上传">

</form>

注意:运行index.php文件必须是开启wamp后在浏览器中输入:localhost/tests/up/index.php才可以运行!!后面操作也是这样。

用php实现文件的上传

用php实现文件的上传

3、第二步:在doupload.php文件里面进行如下的编码,这里我将会分布给大家解析。

代码编写步骤:首先获取文件信息,然后定义上传的文件类型,上传后文件存放路径

代码:

//1.获取上传文件信息

$upfile=$_FILES["pic"];   //pic是前面index.php上传文件时的name值!

//定义允许的类型 ,如果需要上传其他文件你只要对应的改文件属性就可以了,注意按格式。我这里主要是设置了只能上传图片,当然你也可以不要这个定义就可以什么都上传了。

$typelist=array("image/jpeg","image/jpg","image/png","image/gif");

//上传后存放的路径

$path="./uploads/";//定义一个上传后的目录

用php实现文件的上传

4、第三步:对上传的文件进行错误的定义编写,这样就知道当文件上传的过程中哪里出现问题了,就弹出对应的错误提示。

代码:

//2.过滤上传文件的错误号

if($upfile["error"]>0){ //$upfile["error"]是文件错误机制,可以针对对应提示的错误编码来对应的显示错误信息。

//获取错误信息

switch($upfile['error']){

case 1:  

$info="上传得文件超过了 php.ini中upload_max_filesize 选项中的最大值.";

break;

case 2:

$info="上传文件大小超过了html中MAX_FILE_SIZE 选项中的最大值.";

break;

case 3:

$info="文件只有部分被上传";

break;

case 4:

$info="没有文件被上传.";

break;

case 6:

$info="找不到临时文件夹.";

break;

case 7:

$info="文件写入失败!";

break;

}

die("上传文件错误,原因:".$info);  //die是直接把错误输出并且停止继续执行下去

}

注意:以上这里注意看对应的数字就是对应的错误原因。

用php实现文件的上传

5、第四步:这次的编码主要限制文件的大小,文件类型的过滤,还有设置文件名称

代码:

//3.本次上传文件大小的过滤(自己选择)删除后就可以不限制文件大小

if($upfile['size']>100000){

die("上传文件大小超出限制");

}

//4.类型过滤

if(!in_array($upfile["type"],$typelist)){

die("上传文件类型非法!".$upfile["type"]);

}

//5.上传后的文件名定义(随机获取一个文件名)

$fileinfo=pathinfo($upfile["name"]);//解析上传文件名字

do{ //为的是判断是否已经存在文件名称和路径

$newfile=date("YmdHis").rand(1000,9999).".".$fileinfo["extension"];

//这里给文件的名字设置为当前时间年月日时分秒+随机设置数字,这一就可以防止名字冲突而覆盖了。

}while(file_exists($path.$newfile));

用php实现文件的上传

6、第五步:执行文件上传。这步主要是移动文件到设置好的路径并且重新给文件取名。

代码:

//6.执行文件上传

//判断是否是一个上传的文件

if(is_uploaded_file($upfile["tmp_name"])){

//执行文件上传(移动上传文件)  -->需要移动文件到当前的路径

if(move_uploaded_file($upfile["tmp_name"],$path.$newfile)){

 echo "文件上传成功!";//如果上传成功就提示成功

//注意:如果你是想把文件名存到数据库你需要在这里直接用sql语句执行添加东西到数据库就可以了,并且文件的路径+名字是:$path.$newfile.

}else{

die("上传文件失败!"); //如果上传失败就提示失败

}

}else{

die("不是一个上传文件!"); //如果不是文件就提示这个

}

用php实现文件的上传

7、然后保存好后就可以开始测试这个文件上传了。我就在这里进行演示,并且在下个步骤进行贴出全部的代码。

用php实现文件的上传

用php实现文件的上传

用php实现文件的上传

8、最后附上全部的代码,首先是index.php

<!doctype html>

<html>

 <head>

  <meta charset="UTF-8">

  <title>图片上传和下载示例</title>

 </head>

 <body>

<center>

<h2>文件上传教程</h2>

<!-- 文件上传得form表单 -->

<form action="doupload.php" method="post" enctype="multipart/form-data">

上传图片:<input type="file" name="pic"><input type="submit" value="上传">

</form>

</center>

 </body>

</html>

用php实现文件的上传

9、其次是doupload.php,执行上传文件的代码

代码:

<meta charset="utf-8">

<?php

//1.获取上传文件信息

$upfile=$_FILES["pic"];

//定义允许的类型

$typelist=array("image/jpeg","image/jpg","image/png","image/gif");

$path="./uploads/";//定义一个上传后的目录

//2.过滤上传文件的错误号

if($upfile["error"]>0){

switch($upfile['error']){//获取错误信息

case 1:

$info="上传得文件超过了 php.ini中upload_max_filesize 选项中的最大值.";

break;

case 2:

$info="上传文件大小超过了html中MAX_FILE_SIZE 选项中的最大值.";

break;

case 3:

$info="文件只有部分被上传";

break;

case 4:

$info="没有文件被上传.";

break;

case 6:

$info="找不到临时文件夹.";

break;

case 7:

$info="文件写入失败!";break;

} die("上传文件错误,原因:".$info);

}

//3.本次上传文件大小的过滤(自己选择)

if($upfile['size']>100000){

die("上传文件大小超出限制");

}

//4.类型过滤

if(!in_array($upfile["type"],$typelist)){

die("上传文件类型非法!".$upfile["type"]);

}

//5.上传后的文件名定义(随机获取一个文件名)

$fileinfo=pathinfo($upfile["name"]);//解析上传文件名字

do{

$newfile=date("YmdHis").rand(1000,9999).".".$fileinfo["extension"];

}while(file_exists($path.$newfile));

//6.执行文件上传

//判断是否是一个上传的文件

if(is_uploaded_file($upfile["tmp_name"])){

//执行文件上传(移动上传文件)

if(move_uploaded_file($upfile["tmp_name"],$path.$newfile)){

echo "文件上传成功!";

//echo $newfile;//取这个文件名

// echo "<h3><a href='index.php'>浏览</a></h3>";

}else{

die("上传文件失败!");

}

}else{

die("不是一个上传文件!");

}

用php实现文件的上传

用php实现文件的上传

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢