您的位置:

php文件上传示例,php文件上传代码实现

本文目录一览:

如何通过PHP做文件上传

示例参考代码:

?php

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

    if (!eregi('zip', $_FILES['upfile']['type'])) {

        echo 'The uploaded file is not an pdf File! Please upload a right file!';

    } else {

        $filename = $_FILES['upfile']['name'];

        if (move_uploaded_file($_FILES["upfile"]["tmp_name"], dirname(__file__) .

            "/upload_file/" . $filename)) {

            echo $_FILES["upfile"]["name"] . " uploaded succeed!!!";

        } else {

            echo "Can't upload!!!";

        }

    }

} else {

    echo "File is not selected";

}

怎样用PHP实现文件上传

创建一个文件上传表单

允许用户从表单上传文件是非常有用的。

请看下面这个供上传文件的 HTML 表单:

html

body

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

/body

/html

请留意如下有关此表单的信息:

form 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。

input 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。

创建上传脚本

"upload_file.php" 文件含有供上传文件的代码:

?php

if ($_FILES["file"]["error"] 0)

{

echo "Error: " . $_FILES["file"]["error"] . "br /";

}

else

{

echo "Upload: " . $_FILES["file"]["name"] . "br /";

echo "Type: " . $_FILES["file"]["type"] . "br /";

echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kbbr /";

echo "Stored in: " . $_FILES["file"]["tmp_name"];

}

?

通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。

第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:

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

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

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

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

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

这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。

上传限制

在这个脚本中,我们增加了对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb:

?php

if ((($_FILES["file"]["type"] == "image/gif")

|| ($_FILES["file"]["type"] == "image/jpeg")

|| ($_FILES["file"]["type"] == "image/pjpeg"))

($_FILES["file"]["size"] 20000))

{

if ($_FILES["file"]["error"] 0)

{

echo "Error: " . $_FILES["file"]["error"] . "br /";

}

else

{

echo "Upload: " . $_FILES["file"]["name"] . "br /";

echo "Type: " . $_FILES["file"]["type"] . "br /";

echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kbbr /";

echo "Stored in: " . $_FILES["file"]["tmp_name"];

}

}

else

{

echo "Invalid file";

}

?

注释:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。

保存被上传的文件

上面的例子在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。

这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:

?php

if ((($_FILES["file"]["type"] == "image/gif")

|| ($_FILES["file"]["type"] == "image/jpeg")

|| ($_FILES["file"]["type"] == "image/pjpeg"))

($_FILES["file"]["size"] 20000))

{

if ($_FILES["file"]["error"] 0)

{

echo "Return Code: " . $_FILES["file"]["error"] . "br /";

}

else

{

echo "Upload: " . $_FILES["file"]["name"] . "br /";

echo "Type: " . $_FILES["file"]["type"] . "br /";

echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kbbr /";

echo "Temp file: " . $_FILES["file"]["tmp_name"] . "br /";

if (file_exists("upload/" . $_FILES["file"]["name"]))

{

echo $_FILES["file"]["name"] . " already exists. ";

}

else

{

move_uploaded_file($_FILES["file"]["tmp_name"],

"upload/" . $_FILES["file"]["name"]);

echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

}

}

}

else

{

echo "Invalid file";

}

?

上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。

注释:这个例子把文件保存到了名为 "upload" 的新文件夹。

php 生成自动创建文件夹并上传文件的示例代码

复制代码

代码如下:

?

session_start();

if($_SESSION['Company']=='')

{

//exit();

}

??php

//上传图片

$uptypes=array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','application/x-shockwave-flash','image/x-png');

$max_file_size=5000000;

//上传文件大小限制,

单位BYTE

$addtime=date("Ymd",time());

$testdir="./".$addtime."/";

if(file_exists($testdir)):

else:

mkdir($testdir,0777);

endif;

$destination_folder=$addtime."/";

//上传文件路径

$imgpreview=1;

//是否生成预览图(1为生成,其他为不生成);

$imgpreviewsize=1/2;

//缩略图比例

if

($_SERVER['REQUEST_METHOD']

==

'POST')

{

if

(!is_uploaded_file($_FILES["Pic"][tmp_name]))

//是否存在文件

{

echo

"font

color='red'文件不存在!/font";

exit;

}

$file

=

$_FILES["Pic"];

if($max_file_size

$file["size"])

//检查文件大小

{

echo

"font

color='red'文件太大!/font";

exit;

}

if(!in_array($file["type"],

$uptypes))

//检查文件类型

{

echo

"font

color='red'只能上传图像文件或Flash!/font";

exit;

}

if(!file_exists($destination_folder))

mkdir($destination_folder);

$filename=$file["tmp_name"];

$image_size

=

getimagesize($filename);

$pinfo=pathinfo($file["name"]);

$ftype=$pinfo[extension];

$PicName

=

time().".".$ftype;

$destination

=

$destination_folder.$PicName;

if

(file_exists($destination)

$overwrite

!=

true)

{

echo

"font

color='red'同名文件已经存在了!/a";

exit;

}

if(!move_uploaded_file

($filename,

$destination))

{

echo

"font

color='red'上传文件出错!/a";

exit;

}

$pinfo=pathinfo($destination);

$fname=$pinfo[basename];

}

??

$path

=

dirname(__FILE__);

require_once($path.'/../../Module/Factory.php');

$Factory

=

new

Factory();

$BLL_Trade

=

$Factory-FactoryTrade();

try

{

$Infor

=

new

Infor();

$Infor-Title

=

$_POST['Title'];

$Infor-Deposit

=

$_POST['Deposit'];

$Infor-Hire

=

$_POST['Hire'];

$Infor-Location

=

$_POST['Location'];

$Infor-Pic

=

$destination;

$Infor-Intro

=

$_POST['Intro'];

if($_SESSION['MemberId']

==''){

$Infor-Member-ID='';

}else

{

$Infor-Member-ID

=

$_SESSION['MemberId'];}

if($_POST['GoodsBarCode']

==''){

$Infor-Goods-BarCode

=

0;

}else

{

$Infor-Goods-BarCode

=

$_POST['GoodsBarCode'];}

$Infor-Class-ID

=

0;//日后修改

$Infor-IssueTime

=

time();

$Infor-ViewNum

=

0;

$Infor-State

=

1;//现在未定,日后修改

$Infor-Top

=

0;

$Infor-Recommend

=

0;

$Infor-BookMember-ID

=

0;

$Infor-BookTime

=

0;

$Infor-BookRemark

=

0;

$BLL_Trade-CreateInfor($Infor);

echo

'发布信息成功!';

}

catch

(Exception

$Err){

echo

$Err-getMessage();

}

?

php上传文件到服务器

1、通过PHP,可以把文件上传到服务器。创建一个文件上传表单,下面这个供上传文件的 HTML 表单:

html

body

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

/body

/html

2、创建上传脚本,命名为"upload_file.php" 文件含有供上传文件的代码:

?php

if ($_FILES["file"]["error"]  0)

  {

  echo "Error: " . $_FILES["file"]["error"] . "br /";

  }

else

  {

  echo "Upload: " . $_FILES["file"]["name"] . "br /";

  echo "Type: " . $_FILES["file"]["type"] . "br /";

  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kbbr /";

  echo "Stored in: " . $_FILES["file"]["tmp_name"];

  }

?

注:通过使用 PHP 的全局数组 “$_FILES”,就可以实现从客户计算机向远程服务器上传文件。

怎么用php做一个文件上传代码实例

?php

  /** 

    file: fileupload.class.php 文件上传类FileUpload

    本类的实例对象用于处理上传文件,可以上传一个文件,也可同时处理多个文件上传

  */

  class FileUpload { 

    private $path = "./uploads";          //上传文件保存的路径

    private $allowtype = array('jpg','gif','png'); //设置限制上传文件的类型

    private $maxsize = 1000000;           //限制文件上传大小(字节)

    private $israndname = true;           //设置是否随机重命名文件, false不随机

 

    private $originName;              //源文件名

    private $tmpFileName;              //临时文件名

    private $fileType;               //文件类型(文件后缀)

    private $fileSize;               //文件大小

    private $newFileName;              //新文件名

    private $errorNum = 0;             //错误号

    private $errorMess="";             //错误报告消息

 

    /**

     * 用于设置成员属性($path, $allowtype,$maxsize, $israndname)

     * 可以通过连贯操作一次设置多个属性值

     *@param  string $key  成员属性名(不区分大小写)

     *@param  mixed  $val  为成员属性设置的值

     *@return  object     返回自己对象$this,可以用于连贯操作

     */

    function set($key, $val){

      $key = strtolower($key); 

      if( array_key_exists( $key, get_class_vars(get_class($this) ) ) ){

        $this-setOption($key, $val);

      }

      return $this;

    }

 

    /**

     * 调用该方法上传文件

     * @param  string $fileFile  上传文件的表单名称 

     * @return bool        如果上传成功返回数true 

     */

 

    function upload($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'];

 

      /* 如果是多个文件上传则$file["name"]会是一个数组 */

      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[] = $this-getError();

              $return=false; 

            }

          }else{

            $errors[] = $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;

              }

              $fileNames[] = $this-newFileName;  

            }          

          }

          $this-newFileName = $fileNames;

        }

        $this-errorMess = $errors;

        return $return;

      /*上传单个文件处理方法*/

      } else {

        /* 设置文件信息 */

        if($this-setFiles($name,$tmp_name,$size,$error)) {

          /* 上传之前先检查一下大小和类型 */

          if($this-checkFileSize()  $this-checkFileType()){ 

            /* 为上传文件设置新文件名 */

            $this-setNewFileName(); 

            /* 上传文件  返回0为成功, 小于0都为错误 */

            if($this-copyFile()){ 

              return true;

            }else{

              $return=false;

            }

          }else{

            $return=false;

          }

        } else {

          $return=false; 

        }

        //如果$return为false, 则出错,将错误信息保存在属性errorMess中

        if(!$return)

          $this-errorMess=$this-getError();  

 

        return $return;

      }

    }

 

    /** 

     * 获取上传后的文件名称

     * @param  void   没有参数

     * @return string 上传后,新文件的名称, 如果是多文件上传返回数组

     */

    public function getFileName(){

      return $this-newFileName;

    }

 

    /**

     * 上传失败后,调用该方法则返回,上传出错信息

     * @param  void   没有参数

     * @return string  返回上传文件出错的信息报告,如果是多文件上传返回数组

     */

    public function getErrorMsg(){

      return $this-errorMess;

    }

 

    /* 设置上传出错信息 */

    private function getError() {

      $str = "上传文件font color='red'{$this-originName}/font时出错 : ";

      switch ($this-errorNum) {

        case 4: $str .= "没有文件被上传"; break;

        case 3: $str .= "文件只有部分被上传"; break;

        case 2: $str .= "上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值"; break;

        case 1: $str .= "上传的文件超过了php.ini中upload_max_filesize选项限制的值"; 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';

    }

 

    /* 设置和$_FILES有关的内容 */

    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);

      $aryStr = explode(".", $name);

      $this-setOption('fileType', strtolower($aryStr[count($aryStr)-1]));

      $this-setOption('fileSize', $size);

      return true;

    }

 

    /* 为单个成员属性设置值 */

    private function setOption($key, $val) {

      $this-$key = $val;

    }

 

    /* 设置上传后的文件名称 */

    private function setNewFileName() {

      if ($this-israndname) {

        $this-setOption('newFileName', $this-proRandName());  

      } else{ 

        $this-setOption('newFileName', $this-originName);

      } 

    }

 

    /* 检查上传的文件是否是合法的类型 */

    private function checkFileType() {

      if (in_array(strtolower($this-fileType), $this-allowtype)) {

        return true;

      }else {

        $this-setOption('errorNum', -1);

        return false;

      }

    }

 

    /* 检查上传的文件是否是允许的大小 */

    private function checkFileSize() {

      if ($this-fileSize  $this-maxsize) {

        $this-setOption('errorNum', -2);

        return false;

      }else{

        return true;

      }

    }

 

    /* 检查是否有存放上传文件的目录 */

    private function checkFilePath() {

      if(empty($this-path)){

        $this-setOption('errorNum', -5);

        return false;

      }

      if (!file_exists($this-path) || !is_writable($this-path)) {

        if (!@mkdir($this-path, 0755)) {

          $this-setOption('errorNum', -4);

          return false;

        }

      }

      return true;

    }

 

    /* 设置随机文件名 */

    private function proRandName() {    

      $fileName = date('YmdHis')."_".rand(100,999);    

      return $fileName.'.'.$this-fileType; 

    }

 

    /* 复制上传文件到指定的位置 */

    private function copyFile() {

      if(!$this-errorNum) {

        $path = rtrim($this-path, '/').'/';

        $path .= $this-newFileName;

        if (@move_uploaded_file($this-tmpFileName, $path)) {

          return true;

        }else{

          $this-setOption('errorNum', -3);

          return false;

        }

      } else {

        return false;

      }

    }

  }

php如何实现文件上传

所谓上传就是把文件从你电脑本地复制到你的项目指定文件夹下。

但这有个中间过程,就是复制到系统指定的临时文件夹生成临时文件。

然后将临时文件复制到你指定的文件夹下。

剩下的就是各种验证了。

给你个图片上传方法

//上传一张图片

$pic = $_FILES['pic'];

function upload($pic){

$tmp_name = $pic['tmp_name'];

$name = $pic['name'];

$type = $pic['type'];

$size = $pic['size'];

if(!is_uploaded_file($tmp_name)) exit('不是上传文件');

//判断是否是图片

$mine = array('image/png','image/jpg','image/gif','image/jpeg');

if(!in_array($type,$mine)) exit('图片格式不正确');

//判断是否有错误码

$error = $pic['error'];

switch ($error) {

case 1:

exit("超出上传文件的最大限制");

case 2:

exit("超出了指定的文件大小");

case 3:

exit("只有部分文件被上传");

case 4:

exit("文件没有被上传");

case 6:

exit("找不到临时文件夹");

case 7:

exit("文件写入失败");

}

echo "================br/";

echo "上传文件名称是:".$name."br/";

echo "上传文件类型是:".$type."br/";

echo "上传文件大小是:".$size."br/";

echo "上传后系统返回的值是:".$error."br/";

echo "上传文件的临时存放路径是:".$tmp_name."br/";

echo"开始移动临时文件".'br';

$des_name = 'up/'.mt_rand().time().'.'.basename($type);

$res = move_uploaded_file($tmp_name, $des_name);

if($res){

echo "================br/";

echo "上传图片成功".'br';

}

}