PHP上传文件代码之入门代码,入门级文件上传详

作者: 计算机网络  发布:2019-09-26

上传文件大家少不了move_uploaded_file函数本函数检查并保管由 file 钦定的公文是法定的上传文件(即通过 php教程 的 http post 上传机制所上传的)。假如文件合法,则将其活动为由 newloc 钦命的文书。

那是一种特别轻松文本上传措施。基于安全方面包车型地铁设想,您应该扩展有关如何客商有权上传文件的限量。

就算 file 不是官方的上传文件,不会冒出别的操作,move_uploaded_file() 将返回 false。

 代码如下

比如 file 是法定的上传文件,但出于有些原因不能够活动,不会现出其余操作,move_uploaded_file() 将赶回 false,其它还有只怕会时有发生一条警告。

<!DOCTYPE html>  
    <html>  
    <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
    <meta http-equiv="Content-Language" content="zh-cn" />  
    </head>  
    <body>  
    <form action="/upload.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>  
    <?php  
    if($_POST){  
     if ( $_FILES["file"]["size"] < 2000000 )  
       {  
       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) . " Kb<br />";  
         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";  
       }  
    }  
    ?>  
    </body>  
    </html> 

先来看一个有关在上传关表单设置

首先个参数是表单的 input name,第三个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就疑似这么:

<html>
<head>
<title>a simple file upload form</title>
</head>
<body>
<form enctype="multipart/form-data"
   action="<?print $_server['php_self']?>" method="post">
<p>
<input type="hidden" name="max_file_size" value="102400" />
<input type="file" name="fupload" /><br/>
<input type="submit" value="upload!" />
</p>
</form>
</body>
</html>

$_FILES["file"]["name"] - 被上传文件的名目
$_FILES["file"]["type"] - 被上传文件的品种
$_FILES["file"]["size"] - 被上传文件的大大小小,以字节计
$_FILES["file"]["tmp_name"] - 存款和储蓄在服务器的文本的不常别本的名号
$_FILES["file"]["error"] - 由文件上传导致的错误代码

这么大家主设置的上传文件最大不可能超过102400字节了

实例

在php中要落实文本上传非常的粗略如下代码

首先是上传的交由页面upfile.html

if ( $_files['fupload']['type'] == "image/gif" ) {

         $source = $_files['fupload']['tmp_name'];
         $target = "upload/".$_files['fupload']['name'];
         move_uploaded_file( $source, $target );// or die ("couldn't copy");
         $size = getimagesize( $target );

         $imgstr = "<p><img width="$size[0]" height="$size[1]" ";
         $imgstr .= "src="$target" alt="uploaded image" /></p>";

         print $imgstr;
     }

 代码如下

如此就ko了,下边大家总计实例

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<form action="upload.php" enctype="multipart/form-data" method="POST">
<input type="hidden" name="max_file_size" value="33554432">
<input type="file" name="file">
<input type="submit" name="submit" value="上传" />
</form>

php
<html>
<form enctype="multipart/form-data" action="" method="post">
<input type="hidden" name="max_file_size" value="6000000" /> <!--设置允许提交表单的最大字节数-->
文件上传: <input name="file" type="file" />
<input type="submit" value="上传"/>
</form>
</html>

1. PHP援救HTML以POST的格局传输文件,不过form中必需申明enctype的品质="multipart/form-data",否则一切form表单将不起任何效果。

 

2. form表单中必得满含多少个name为MAX_FILE_SIZE的掩盖域,这么些遮盖域用来内定顾客最大能上传的文件大小,必得注明在具有其余input标签在此以前。即使文件超大的话,浏览器直接就足以交到提醒,不必浪费上传的时刻。

<?
//管理程序
function extend($file_name) //定义获取文件的扩大名函数
{$extend =explode("." , $file_name);
$va=count($extend)-1;
return strtolower($extend[$va]);}

$dirname="../";//是或不是启用上一层路线,格式为:$dirname="../";或$dirname="
$dir='upload/aa/bb';//设定上传目录,与地方的$dirname组合
$file=$_files['file'];//从文件域表单获取文件
$filename=$file['name'] ;//获取文件全名
$c_filesize=$file['size'] ;//获取本地的文件大小
$extendname=extend($filename);//获取文件扩充名
if($c_filesize>300000000000)die("文件太大");//限制上传文件大小, 单位字节

//if($extendname!="jpg")die("只允许上传jpg格式的图样");//限制上传文件格式,去掉语句初叶的两斜杠生效

if(!file_exists($dir));//检查目录文件夹是或不是留存,海市蜃楼则树立新文件夹
{
$v=split ('[/.-]', $dir);
for ( $i=0 ; $i <count($v) ; $i++)
{$dirname=$dirname.$v[$i];
if(!file_exists($dirname))mkdir($dirname);
$dirname=$dirname."/";}
} //目录成立达成
?>

<?
$dest=$dirname.date("ymdhis", time()).rand(一千00,999999).".".$extendname; //设置文件名叫日期加上从一千00到999999的随机数和扩张名
if(file_exists($dest))die("该公文已经存在");
if(move_uploaded_file($file['tmp_name'],$dest)) //调用文件上传函数
{$s_filesize=filesize($dest);//获取服务器端的文件大小
echo "文件上传成功,<a href=".$dest.">查看文件地方</a>";
echo "<br>当半夏件名:".$filename;
echo "<br>远端文件名:".$dest;
echo "<br>大 小:".ceil($s_filesize/1024)." kb";
echo "<br>扩展名:".$extendname;
echo "<br>大 小:".$c_filesize." byte";}
else
{echo "还未开展文件上传";}
?>

下边正是上传管理公事upload.php

小结了文件上传的错误代码

 代码如下

  upload_err_ok未有不当。
  
  upload_err_ini_size的上传的文书超越最高价值存在中钦命的文本。
  
  upload_err_form_size的上传的文书超越最高价值所钦命的max_file_size隐蔽的构件。
  
  upload_err_partial的文本上传被打消了,唯有部分的公文被上传。
  
  upload_err_nofile未有公文被上传。

<?php
 
    /* 设定上传目录 */
    $dest_dir='uploads';
 
    /* 检验上传目录是不是存在 */
    if( !is_dir($dest_dir) || !is_writeable($dest_dir) )
    {
        die("上传目录 ".$dest_dir." 一纸空文或无法写入");
    }
 
    /* 设置允许上传文件的品种 */
    $type=array("rar","zip","txt","c");
 
    /* 获取上传文件音讯 */
    $upfile=&$HTTP_POST_FILES['file'];
 
    /* 获取文件后缀名函数 */
    function fileext($filename)
    {
        return substr(strrchr($filename, '.'), 1);
    }
 
    /* 判定上传文件类型 */
    if( !in_array( strtolower( fileext($upfile['name'] ) ),$type) )
     {
        $text=implode(",",$type);
        echo "对不起,您不得不上传以下体系文件: ",$text,"<br>";
     }
     else
     {
        /* 设置文件名称叫"日期_文件名" */
        $dest=$dest_dir.'/'.date("ymdHis")."_".$upfile['name'];
 
        /* 移动上传文件到钦定文件夹 */
        $state=move_uploaded_file($upfile['tmp_name'],$dest);
 
        if ($state)
        {
            print("文件上传成功!<br>");
            print("文件名:".$dest."<br>");
            print("上传的文件大小:".( round($upfile['size'] / 1024,2) )." KB<br>");
        }
        else
        {
            /* 管理错误消息 */
            switch($upfile['error'])
            {
                case 1 : die("上传文件大小超出php.ini:upload_max_filesize 限制<br>");
                case 2 : die("上传文件大小赶过 MAX_FILE_SIZE 限制<br>");
                case 3 : die("文件仅被一些上传<br>");
                case 4 : die("未有公文被上传<br>");
                case 5 : die("找不到有的时候文件夹<br>");
                case 6 : die("文件写入失利<br>");
            }
        }
     }
 
?>

 

本文由金沙澳门官网送注册58发布于计算机网络,转载请注明出处:PHP上传文件代码之入门代码,入门级文件上传详

关键词: