首页后端开发PHPPHP实现文件上传的方法和步骤是什么?

PHP实现文件上传的方法和步骤是什么?

时间2024-03-26 01:14:03发布访客分类PHP浏览413
导读:这篇文章给大家分享的是PHP实现文件上传的方法和步骤,还介绍了封装的操作,文中示例代码介绍的非常详细,对大家学习PHP有一定的帮助,那么感兴趣的朋友接下来一起跟随小编了解看看吧。 PHP文件上传主要两个步骤: 1.首先前端html写好文件表...

这篇文章给大家分享的是PHP实现文件上传的方法和步骤,还介绍了封装的操作,文中示例代码介绍的非常详细,对大家学习PHP有一定的帮助,那么感兴趣的朋友接下来一起跟随小编了解看看吧。

PHP文件上传主要两个步骤:

1.首先前端html写好文件表单上传网页

2.在前端点提交时,web服务器php脚本通过超全局变量$_FILES和一个move_uploaded_file函数搞定

前端html如下:

!DOCTYPE HTML>
    
html>
    
head>
    
 meta charset="utf-8">
    
 title>
    文件上传/title>
    
/head>
    
body>
    
 form action="upload.php" method="post" enctype="multipart/form-data">
    
 div style="margin: 0 auto;
     padding:50px 0px;
     width:300px;
    ">
    
 input type="file" id="upload" name="uploadpic" style="display:none"/>
    
 input type="text" id="filename" value="文件名">
    
 input type="button" id="picbtn" value="图片上传" />
    
 input type="submit" value="提交" />
     
 
 /div>
    
 /form>
    
 script type="text/javascript">

 function $(id)
 {
    
 var objs = document.getElementById(id);
    
 return objs;

 }

 window.onload = function(){

 $("picbtn").onclick = function(){
    
 $("upload").click();
 //点图片上传时,同时触发文件选择
 }

 
 $("upload").onchange = function(){
    
 $("filename").value = this.value;
 //获取文件选择值
 }

 
 }
     
 /script>
    
/body>
    
/html>

注:表单上传文件时,method必须用post,且须声明是enctype="multipart/form-data"

2.服务器php脚本upload.php代码如下:

?php
if(move_uploaded_file($_FILES['uploadpic']['tmp_name'], './fileupload/'.$_FILES['uploadpic']['name']))
{
    
 echo "ok";

 
}

else 
{
    
 echo "fail";

}
    

注:可以用print_r($_FILES)打印查看超全局变量里面放的内容,可以看到文件的相关信息都放在这个变量里面;如

array (
 'uploadpic' =>
     
 array (
 'name' =>
     '1客栈首页.jpg',
 'type' =>
     'image/jpeg',
 'tmp_name' =>
     'C:\\Windows\\Temp\\php3F1C.tmp',
 'error' =>
     0,
 'size' =>
 1706919,
 ),
)ok

从变量的数组里面可以知道上传的文件名,文件类型、web服务器临时存放图片的位置(如果要更改临时存放路径,可以去php.ini里面更改),错误信息和文件大小(限制文件上传大小,也可以到php.ini里修改)。

error有如下几种:

其值为 0,没有错误发生,文件上传成功。
其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
其值为 3,文件只有部分被上传。
其值为 4,没有文件被上传。
其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。
其值为 7,文件写入失败。PHP 5.1.0 引进。

=====文件上传封装类======

?php
class UpFile{
    
 public $maxsize=2;
     //1M
 public $errmsg="";
    
 public $ext = "png,jpg,bmp,gif";

 
 //上传大小是否符合
 function isAllowSize($size)
 {
    
 if($size = $this->
maxsize*1024*1024)
 {
    
 return true;

 }

 else 
 {
    
 return false;

 }

 }

 
 //判断后缀名是否符合
 function isAllowExt($ext)
 {
    
 return in_array(strtolower($ext), explode(',', $this->
    ext));

 }

 
 //获取文件后缀名
 function getFileExt($file)
 {
    
 $arr = explode('.', $file);
    
 return end($arr);

 }

 
 //图片上传,$pickey为input的name值,$save_path保存路径
 function upload($pickey,$save_path)
 {

 if(!isset($_FILES[$pickey]))
 {
    
 return false;

 }

 
 if($_FILES[$pickey]['error'] !=0)
 {
    
 $this->
    errmsg = $this->
    getErrorType($_FILES[$pickey]['error']);
    
 return false;

 }
    
 $file_ext = $this->
    getFileExt($_FILES[$pickey]['name']);
    
 echo $file_ext;
    
 if(!$this->
isAllowExt($file_ext))
 {
    
 $this->
    errmsg = "文件后缀名不符合";
    
 return false;

 }
    
 echo $_FILES[$pickey]['size'];
    
 if(!$this->
isAllowSize($_FILES[$pickey]['size']))
 {
    
 $this->
    errmsg = "大小超过限制";
    
 return false;

 }
    
 
 $str = "abcdefjhijkmnpqrst23456789";
    
 $filename = date("YmdHis",time()).substr(str_shuffle($str), 0,6);
    
 $dir = $this->
    makeDir($save_path);

 if(move_uploaded_file($_FILES[$pickey]['tmp_name'], $dir.'/'.$filename.'.'.$file_ext))
 {
    
 
 return true;

 }

 else 
 {
    
 $this->
    errmsg = "上传失败";
    
 return false;

 }

 }

 
 //创建目录
 function makeDir($save_path)
 {
    
 $path = $save_path.'/'.date("Ymd",time());

 
 if(is_dir($path) || mkdir($path,0777,true)) //不存在该目录文件,创建
 {
    
 echo $path;
    
 return $path;

 }

 else 
 {
    
 return false;

 }

 }

 
 //错误类型分析
 function getErrorType($error)
 {
    
 $errmsg = "";

 switch ($error)
 {
    
 case 0:
 $errmsg = "文件上传成功";
    
 break;
    
 case 1:
 $errmsg = "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";
    
 break;
    
 case 2:
 $errmsg = "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值";
    
 break;
    
 case 3:
 $errmsg = "文件只有部分被上传";
    
 break;
    
 case 4:
 $errmsg = "没有文件被上传";
    
 break;
    
 case 6:
 $errmsg = "找不到临时文件夹";
    
 break;
    
 case 7:
 $errmsg = "文件写入失败";
    
 break;

 }
    
 return $errmsg;

 }

}
    

使用如下:

?php
include 'upfile.class.php';
    
 
$upfile = new UpFile();
    
if($upfile->
upload('uploadpic', "./fileupload"))
{
    
 echo "ok";

}

else
{
    
 echo $upfile->
    errmsg;

}
    

关于PHP如何实现文件上传的内容就介绍到这,本文只是提供了一种实现思路,代码仅供参考,需要的朋友可以了解看看,希望对大家学习PHP有帮助,想要了解更多可以继续浏览网络其他相关的文章。

文本转载自脚本之家

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: PHP实现文件上传的方法和步骤是什么?
本文地址: https://pptw.com/jishu/653162.html
C语言中单向链表的增删改操作如何实现 浅谈PHP的四个框架,选择PHP框架有啥好处?

游客 回复需填写必要信息