首页 > 后端开发 > 正文

php 实现上传图片至服务器的函数(php 编写 实现上传图片至服务器的函数)

2024-08-13 11:02:11 | 我爱编程网

php 实现上传图片至服务器的函数(php 编写 实现上传图片至服务器的函数)相关内容,小编在这里做了整理,希望能对大家有所帮助,关于php 实现上传图片至服务器的函数(php 编写 实现上传图片至服务器的函数)信息,一起来了解一下吧!

本文目录一览:

php 实现上传图片至服务器的函数(php 编写 实现上传图片至服务器的函数)

php 实现上传图片至服务器的函数

<form method=post action="upload.php" ENCTYPE="multipart/form-data">

<input type="file" name="upload_file">
<input type="submit" name="submit" value="上传文件">

用PHP上传时,需要对内容作详细的检查,例如是否容许读写文件,文件格式、文件大小是否在你指定的大小内等。

<?

$file_size_max = 1000000;

// 限制文件上传最大容量(bytes)

$store_dir = "/public/www/upload/";

// 上传文件的储存位置

$accept_overwrite = true;

//允许读写文件

// 检查文件大小

if ($upload_file_size > $file_size_max) {

echo "对不起,你的文件容量大于规定";

exit;

}

// 检查读写文件

if (file_exists($store_dir . $upload_file_name) &&&& !$accept_overwrite) {

echo "文件已存在,不能再复制";

exit;

}

//复制文件到指定目录

if (! @ copy($upload_file,$store_dir . $upload_file_name)) {

echo "复制文件失败";

exit;

}

echo "上传文件完成";
?>

php 实现上传图片至服务器的函数(php 编写 实现上传图片至服务器的函数)

php 编写 实现上传图片至服务器的函数

<?php
   class FileUpload{
      private $filepath;   //指定上传文件保存的路径
      private $allowtype=array("gif","jpg","jpeg","png");//允许上传文件的类型
      private $maxsize=1000000;//允许上传文件的最大值
      private $israndname=true;//是否随机重命名,
      private $originName;//源文件名字
      private $tmpFileName;//临时文件名字
      private $fileType;//上传后的文件类型,主要是文件后缀名
      private $fileSize;//文件尺寸
      private $newFileName;//新文件名字
      private $errorName=0;//错误号
      private $errorMess="";//用来提供错误报告
        //用于对上传文件初始化
        //指定上传路径  2·允许的类型  3·限制大小  4·是否使用随机文件名称
        //让用户可以不用换位置传参数,后面参数给值不用按照位置或者必须有值
         function __construct($options=array()){
            foreach($options as $key=>$val){
                $key = strtolower($key);
            //查看用户参数中的数组下标是否和成员属性名相同
            //get_class_vars(get_class($this))得到类属性的数组
            //如果$key下标不在这个类属性的数组中,则退出for循环
               if (!in_array($key,get_class_vars(get_class($this)))){
                continue;
                }
             $this -> setOption($key,$val);
         }
     }
         private function setOption($key,$val){
         //让实例化后获取过来的数组下标 = 数组下标的值,这里即为构造函数初始化
         //构造函数中调用,等于把所有属性初始化,将来可以直接访问
          $this -> $key=$val;
         }

         private function getError(){
             $str="上传文件{$this->originName}时出错";
             switch($this -> errorNum){
                 case 4: $str.="没有文件被上传";
                 break;
                 case 3: $str.="文件只有部分上传";
                 break;
                 case 2: $str.="上传文件超过了表单的值";
                 break;
                 case 1: $str.="上传文件超过phpini的值";
                 break;
                 case -1: $str.="未允许的类型";
                 break;
                 case -2: $str.="文件过大上传文件不能超过{$this->maxsize}字节";
                 break;
                 case -3: $str.="上传文件失败";
                 break;
                 case -4: $str.="建立存放上传文件目录失效,请重新上传指定目录";
                 break;
                 case -5: $str.="必须指定上传文件的路径";
                 break;
                 default: $str.="未知错误";
             }
             return $str.'<br>';
         }
         //用来检查文件上传路径
         private function checkFilePath(){
               if(empty($this -> filepath)){
                   $this -> setOption("errorNum",-5);
                   return false;
               }
               if(!file_exists($this -> filepath) || !is_writable($this -> filepath)){
                       if(!@mkdir($this -> filepath,0755)){
                           $this -> setOption("errorNum",-4);
                           return false;
                       }    
                     }
                     return true;
               }
         //用来检查上传文件尺寸大小

         private function checkFileSize(){
            if($this -> fileSize > $this ->maxsize){
                  $this -> setOption("errorNum",-2);
                  return false;
            }else{
            return true;
            }
         }

         //用来检查文件上传类型
         private function checkFileType(){
                if(in_array(strtolower($this->fileType),$this -> allowtype)){
                     return true;
                }else{
                //如果$this->fileType这个类型 不在$this -> allowtype这个数组中,则把错误号变成-1
                      $this -> setOption("errorNum",-1);
                      return false;
                }
         }
         private function setNewFileName(){
              if($this -> israndname){
                       $this -> setOption("newFileName",$this->preRandName());
              }else{
                      $this -> setOption("newFileName",$this -> originName);
              }
         }
         //用于检查文件随机文件名
         private function preRandName(){
                $fileName=date("Ymdhis").rand(100,999);
                return $fileName.".".$this -> fileType;
         }
         //用来上传一个文件

      function uploadFile($fileField){
            //检查文件路径
            $return = true;
          if(!$this -> checkFilePath()){
               $this -> errorMess=$this -> getError();
               return false;
            }//获取文件信息
             $name     = $_FILES[$fileField]['name'];
             $tmp_name = $_FILES[$fileField]['tmp_name'];
             $size     = $_FILES[$fileField]['size'];
             $error    = $_FILES[$fileField]['error'];              
          if(is_array($name)){//判断获取过来的文件名字是否为数组
              $errors=array();//如果为数组则设置为一个数组错误号
                 for($i=0;$i<count($name);$i++){
                  //循环每个文件即每个类属性赋值或者说初始化属性值 或者初始化构造函数
                     if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){
                         if(!$this->checkFileSize() || !$this->checkFileType()){
                          //如果上面尺寸或者类型不对,则调用这个错误信息
                             $errors[$i]=$this->getError();
                             $return=false;
                         }
                     }else{
                      //这里是
                      $error[]=$this->getError();
                      $return=false;
                     }
                     if(!$return)
                      $this->setFiles();
                 }

                 if($return){
                  $fileNames=array();
                    for($i=0;$i<count($name);$i++){
                      if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){
                             $this->setNewFileName();
                         if(!$this->copyFile()){
                           $errors=$this->getError();
                           $return=false;
                         }else{
                          $fileNames[$i]=$this->newFileName;
                         }
                          }

                    }
                       $this->newFileName=$fileNames;
                 }

           $this->errorMess=$errors;
           return $return;
                 

          }else{

            //看看$name,$tmp_name,$size,$error这些是否赋值成功 否则返回FALSE
            if($this -> setFiles($name,$tmp_name,$size,$error)){
            //看看文件大小尺寸是否匹配,不匹配返回FALSE
                    if($this -> checkFileSize() && $this -> checkFileType()){
                          //获取新文件名
                          $this->setNewFileName();
                            if($this->copyFile()){
                                return true;
                            }else{
                               return false;
                            }
                    }else{
                    $return=false;
                         }
    }else{
    $return=false;
          }
                             if(!$return){
                        $this -> errorMess = $this ->getError();
                        return $return;
                                 }
}

        }

    function copyFile(){//将文件从临时目录拷贝到目标文件夹
        if(!$this->errorNum){
           //如果传递来的路径有斜杠,则删除斜杠再加上斜杠
           //./upload+./
           $filepath=rtrim($this->filepath,'/').'/';
            //./upload+./+加上随机后的新文件名和后缀
            //这里指创建一个新的$filepath.这个文件 像占位符但是为空的
           $filepath.=$this->newFileName;
          //尝试着把临时文件$this->tmpFileName移动到$filepath下哪里覆盖原来的这个文件
               if(@move_uploaded_file($this->tmpFileName,$filepath)){
                       return true;
                   }else{
                     $this->setOption('errorNum',-3);
                     return false;
                       }
        }else{
         return false;
             }
        }
          //这里是为了其他剩余的属性进行初始化操作!
         private function setFiles($name="",$tmp_name="",$size=0,$error=0){
         //这里给错误号赋值
             $this -> setOption("errorNum",$error);
             //如果这里有错误,直接返回错误
               if ($error){
                   return false;
               }
             $this -> setOption("originName",$name);//复制名字为源文件名
             $this -> setOption("tmpFileName",$tmp_name);
             $arrstr = explode(".",$name);//按点分割文件名,
             //取分割后的字符串数组最后一个 并转换为小写,赋值为文件类型
             $this -> setOption("fileType",strtolower($arrstr[count($arrstr)-1]));
             $this -> setOption("fileSize",$size);
             return true;
         }
         //用来获取上传后的文件名
         function getNewFileName(){ 
              return $this -> newFileName;
          }

         //上传失败,后则返回这个方法,就可以产看报告
         function getErrorMsg(){
                   return $this -> errorMess;
         }
   }
?>


============================调用====================================


<?php
require("FileUpload.class.php");
//这里实例化后赋值为数组,数组的下标要对应类中属性的值,否则不能传递值,可以不分先后但是必须一致
$up = new FileUpload(array('israndname'=>'true',"filepath"=>"./upload/",'allowtype'=>array('txt','doc','jpg','gif'),"maxsize"=>1000000));
   echo '<pre>';

   if($up -> uploadFile("pic")){
     print_r($up -> getNewFileName());
   } else{
     print_r($up -> getErrorMsg());
   }
   echo '<pre>';
?>


-------------------HTML-------------------------
<html>
 <head>
<meta http-quive="content-type" content="text/html;charset=utf-8" ></meta>
 </head>
 <body>
          <form action="upload.php" method="post" enctype="multipart/form-data">
                shoppic:<input type="file" name="pic[]"><br>

                <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
                <input type="submit" name="sub" value="添加商品">
          </form>
 </body>

</html>

-------------------或者HTML-------------------------

<html>
 <head>
<meta http-quive="content-type" content="text/html;charset=utf-8" ></meta>
 </head>
 <body>
          <form action="upload.php" method="post" enctype="multipart/form-data">
               //区别在这里
                shoppic:<input type="file" name="pic[]"><br>
shoppic:<input type="file" name="pic[]"><br>
shoppic:<input type="file" name="pic[]"><br>
                <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
                <input type="submit" name="sub" value="添加商品">
          </form>
 </body>

</html>
=====================================================================

以上是自己总结的  还没有怎么精简加工过,仅供参考 我爱编程网

以上不止可以上传图片,可以上自定义任何文件

php 实现上传图片至服务器的函数(php 编写 实现上传图片至服务器的函数)

php的move_uploaded_file函数,文件上传成功,但总出错误提示

我爱编程网(https://www.52biancheng.com)小编还为大家带来php的move_uploaded_file函数,文件上传成功,但总出错误提示的相关内容。

if(!move_uploaded_file($tmp_name,"./files/".$file_name)){
exit("文件上传失败1");
}
move_uploaded_file($tmp_name,"./files/".$file_name)已经在前面执行一次了,所以就出现错误。应该改为:
<?php
$file=$_FILES['file_test'];
$tmp_name=$file['tmp_name'];
$file_name=$file['name'];
$result = move_uploaded_file($tmp_name,"./files/".$file_name);
if(!$result){
exit("文件上传失败1");
}
else{
echo "文件上传成功";
}
?>

以上就是php 实现上传图片至服务器的函数(php 编写 实现上传图片至服务器的函数)全部内容了,了解更多相关信息,关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“php 实现上传图片至服务器的函数(php 编写 实现上传图片至服务器的函数)”相关推荐
php上传文件的函数 php 编写 实现上传图片至服务器的函数
php上传文件的函数 php 编写 实现上传图片至服务器的函数

php实现上传图片至服务器的函数&lt;formmethod=postaction="upload.php"ENCTYPE="multipart/form-data">&lt;inputtype="file"name="upload_file">&lt;inputtype="submit"name="submit"value="上传文件">用PHP上传时,需要对内容作详细的检

2024-07-23 09:57:07
php 实现上传图片至服务器的函数 PHP FTPPHP FTP 函数
php 实现上传图片至服务器的函数 PHP FTPPHP FTP 函数

php实现上传图片至服务器的函数&lt;formmethod=postaction="upload.php"ENCTYPE="multipart/form-data">&lt;inputtype="file"name="upload_file">&lt;inputtype="submit"name="submit"value="上传文件">用PHP上传时,需要对内容作详细的检

2024-09-26 16:50:56
PHP上传图片并把图片地址写入表单中! php 实现上传图片至服务器的函数
PHP上传图片并把图片地址写入表单中! php 实现上传图片至服务器的函数

phpwind上传图片显示却是[upload=1]有关出现[upload=1]和附件图片等不能上传的解决办法出来这种问的朋友大多是用自已的服务器,这个问题出现的主要原为是因为php.ini的设置。解决办法如下:打开php.ini文件,找到:upload_tmp_dir这一行,看一下后面的目录,如果目录为:C:\ProgramFiles\PHP\sessions,那么请把这个目录的users的

2024-09-26 13:16:25
php中move_uploaded_file()的参数(php 实现上传图片至服务器的函数)
php中move_uploaded_file()的参数(php 实现上传图片至服务器的函数)

php中move_uploaded_file()的参数完成文件上传的函数,需要两个参数:/** *  @参数1 上传的文件在服务器的临时文件名 *  @参数2 需要保存该文件的新文件名 **/  // 首先你要确保客户端提交过来的字段和你这段代码上的字段保持一致  $_FILES['goods_img']  // 这个是你的上传控件的name属性值, 它的值为一个数组 $_FILES[

2024-12-10 15:19:27
php 实现上传图片至服务器的函数(PHP文件的上传与下载)
php 实现上传图片至服务器的函数(PHP文件的上传与下载)

php实现上传图片至服务器的函数&lt;formmethod=postaction="upload.php"ENCTYPE="multipart/form-data">&lt;inputtype="file"name="upload_file">&lt;inputtype="submit"name="submit"value="上传文件">用PHP上传时,需要对内容作详细的检

2025-01-01 00:16:41
用PHP怎样实现把文件从一台服务器,移动到另一台FTP服务器呢?
用PHP怎样实现把文件从一台服务器,移动到另一台FTP服务器呢?

PHPmove_uploaded_file()参数的正确写法,求指点该函数的作用是把上传的文件移动到一个新的位置。有两个参数,第一个参数是你上传后的临时文件名,由系统自动生成。通常其样式为:$_FILE["file"]["tmp_name"];其中的file为你前台文件上传表单的名称。第二个参数就是包含有路径的新的文件名。如:"upload/1.jpg";这样,就会把

2024-08-02 04:39:38
thinkphp5 怎么接受zyupload,上传的图片
thinkphp5 怎么接受zyupload,上传的图片

PHP中move_uploaded_file()没有办法使用!无法上传文件。函数用法如下:move_uploaded_file(string$filename,string$destination)$filename上传的文件的文件名。$destination移动文件到这个位置。从报错信息来看应该是两个参数颠倒了官方文档示例&lt;?php$uplo

2025-01-25 10:51:43
php上传图片并压缩-thinkphp如何做图片压缩呢?
php上传图片并压缩-thinkphp如何做图片压缩呢?

phpMD5定义和用法在PHP中,MD5是一种用于计算字符串摘要的安全哈希函数,通过phpmd5()函数实现。该函数的核心是RSADataSecurity,Inc.的MD5Message-DigestAlgorithm,这是一种广泛应用于数字签名和数据完整性校验的算法。MD5算法的工作原理是,它将输入的任意长度字符串压缩成一个固定长度的128位(16字节)散列值,这个散列值被称为消息摘

2024-09-13 14:20:26