您的位置:

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;$icount($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;$icount($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网页批量上传图片是怎么实现的,有没有例子,或插件

#region 绑定 FileUpLoad 控件

public static bool ControlFun(FileUpload ControlName, string[] FileType, int FileSize, string SaveFileName)

{

// 获取上传文件路径

string FileDir = ControlName.PostedFile.FileName;

// 获取上传文件名

string FileName = FileDir.Substring(FileDir.LastIndexOf("\\") + 1);

// 获取上传文件类型

string Types = FileDir.Substring(FileDir.LastIndexOf(".") + 1);

// 获取上传文件大小

int Size = ControlName.PostedFile.ContentLength;

// 获取上传文件名并改名

string UpFileNames = FileName.Substring(FileName.LastIndexOf("."));

// 获取上传文件时间,修改上传文件名

string EditFileName = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff").Replace(" ", "_").Replace(":", "-") + Guid.NewGuid().ToString();

// 上传文件真正名

string UFName = EditFileName + UpFileNames; ;

try

{

// 判断文件类型

string StrType = "";

for (int i = 0; i FileType.Length; i++)

{

if (Types == FileType[i])

{

StrType = Types;

}

}

// 判断文件类型

if (Types != StrType)

{

ShowMessage.Box("上传文件类型不符合");

return false;

}

// 判断文件大小

if (Size FileSize)

{

ShowMessage.Box("上传文件大小超出范围!");

return false;

}

// 上传文件

ControlName.PostedFile.SaveAs(HttpContext.Current.Server.MapPath(SaveFileName) + "/" + UFName);

return true;

}

catch

{

return false;

}

}

#endregion

php上传图片文件常用的几个方法

你好,要先建立一个html代码

form action="upload_file.php" method="post"

enctype="multipart/form-data"

label for="file"Filename:/label

input type="file" name="file" id="file" / 

br /

input type="submit" name="submit" value="Submit" /

/form

然后创建upload_file文件用$_FILE判断文件,下面是判断文件的具体信息

$_FILES["file"]["name"] - 被上传文件的名称

$_FILES["file"]["type"] - 被上传文件的类型

$_FILES["file"]["size"] - 被上传文件的大小,以字节计

$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称

$_FILES["file"]["error"] - 由文件上传导致的错误代

希望对你有帮助!

PHP实现上传图片到数据库并显示输出的方法

本文实例讲述了PHP实现上传图片到数据库并显示输出的方法。分享给大家供大家参考,具体如下:

1.

创建数据表

CREATE

TABLE

ccs_image

(

id

int(4)

unsigned

NOT

NULL

auto_increment,

description

varchar(250)

default

NULL,

bin_data

longblob,

filename

varchar(50)

default

NULL,

filesize

varchar(50)

default

NULL,

filetype

varchar(50)

default

NULL,

PRIMARY

KEY

(id)

)engine=myisam

DEFAULT

charset=utf8

2.

用于上传图片到服务器的页面

upimage.html

!doctype

html

html

lang="en"

head

meta

charset="UTF-8"

meta

name="viewport"

content="width=device-width,

user-scalable=no,

initial-scale=1.0,

maximum-scale=1.0,

minimum-scale=1.0"

meta

http-equiv="X-UA-Compatible"

content="ie=edge"

style

type="text/css"

*{margin:

1%}

/style

titleDocument/title

/head

body

form

method="post"

action="upimage.php"

enctype="multipart/form-data"

描述:

input

type="text"

name="form_description"

size="40"

input

type="hidden"

name="MAX_FILE_SIZE"

value="1000000"

br

上传文件到数据库:

input

type="file"

name="form_data"

size="40"br

input

type="submit"

name="submit"

value="submit"

/form

/body

/html

3.

处理图片上传的php

upimage.php

?php

if

(isset($_POST['submit']))

{

$form_description

=

$_POST['form_description'];

$form_data_name

=

$_FILES['form_data']['name'];

$form_data_size

=

$_FILES['form_data']['size'];

$form_data_type

=

$_FILES['form_data']['type'];

$form_data

=

$_FILES['form_data']['tmp_name'];

$dsn

=

'mysql:dbname=test;host=localhost';

$pdo

=

new

PDO($dsn,

'root',

'root');

$data

=

addslashes(fread(fopen($form_data,

"r"),

filesize($form_data)));

//echo

"mysqlPicture=".$data;

$result

=

$pdo-query("INSERT

INTO

ccs_image

(description,bin_data,filename,filesize,filetype)

VALUES

('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");

if

($result)

{

echo

"图片已存储到数据库";

}

else

{

echo

"请求失败,请重试";

注:图片是以二进制blob形式存进数据库的,像这样

4.

显示图片的php

getimage.php

?php

$id

=2;//

$_GET['id'];

为简洁,直接将id写上了,正常应该是通过用户填入的id获取的

$dsn='mysql:dbname=test;host=localhost';

$pdo=new

PDO($dsn,'root','root');

$query

=

"select

bin_data,filetype

from

ccs_image

where

id=2";

$result

=

$pdo-query($query);

$result=$result-fetchAll(2);

//

var_dump($result);

$data

=

$result[0]['bin_data'];

$type

=

$result[0]['filetype'];

Header(

"Content-type:

$type");

echo

$data;

到浏览器查看已经上传的图片,看是否可以显示

是没有问题的,证明图片已经以二进制的形式存储到数据库了

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+mysql数据库操作入门教程》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:php实现上传图片保存到数据库的方法php上传图片存入数据库示例分享php上传图片到指定位置路径保存到数据库的具体实现php中如何将图片储存在数据库里php下将图片以二进制存入mysql数据库中并显示的实现代码php

从数据库提取二进制图片的处理代码php将图片保存入mysql数据库失败的解决方法php将图片文件转换成二进制输出的方法php图片的二进制转换实现方法

PHP上传图片并把图片地址写入表单中!

其实要保存上传的图片地址并不需要专门地一个input表单项,只要在这个form提交到的后台页面里面做相应处理即可。

你可在后台的表单处理页面里面查找 move_uploaded_file() 这个函数,它的第一个参数是图片的临时文件名,第二个参数是即将保存的地址。只要把这第二个参数保存到数据库即可满足您的要求,并不需要从表单提交一个图片过来再保存。