php 入门级文件上传详解

 更新时间:2016年11月25日 15:09  点击:2135

上传文件我们少不了move_uploaded_file函数本函数检查并确保由 file 指定的文件是合法的上传文件(即通过 php教程 的 http post 上传机制所上传的)。如果文件合法,则将其移动为由 newloc 指定的文件。

如果 file 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 false。

如果 file 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 false,此外还会发出一条警告。


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

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

这样我们主设置的上传文件最大不能超过102400字节了

在php中要实现文件上传很简单如下代码

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了,下面我们总结实例

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>

 

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

$dirname="../";//是否启用上一层路径,格式为:$dirname="../";或$dirname="http://www.cnblogs.com/";等等与$dir组合使用,注意不要溢出根路径
$dir='upload/aa/bb';//设定上传目录,与上面的$dirname组合
$file=$_files['file'];//从文件域表单获取文件
$filename=$file['name'] ;//获取文件全名
$c_filesize=$file['size'] ;//获取本地的文件大小
$extendname=extend($filename);//获取文件扩展名
if($c_filesize>200000000000)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(100000,999999).".".$extendname; //设置文件名为日期加上从100000到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_err_ok没有错误。
  
  upload_err_ini_size的上传的文件超过最高价值存在中指定的文件。
  
  upload_err_form_size的上传的文件超过最高价值所指定的max_file_size隐藏的部件。
  
  upload_err_partial的文件上传被取消了,只有部分的文件被上传。
  
  upload_err_nofile没有文件被上传。

 

http_referer 获取用户来路实例
这是个php教程自来全局变量,所以我们不多介绍了,直接看实例

<?php
            if (isset($_server['http_referer'])) {
                    print "the page you were on previously was {$_server['http_referer']}<br />";
            } else {
                    print "you didn't click any links to get here<br />";
            }
    ?>

    <a href="refer.php">click me!</a>
 

php教程 trim() 表单验证不为空实例,应该算是入门级的实例了,告诉你如何利用trim函数来删除空格然后判断用户提交的数据是否为空。

<html>
<body>
<form method="post" action="formerrorcheck.php">
<h1>contact information</h1>
<table>

<tr>
  <td><b>nickname:</b></td>
  <td><input type="text" name="nickname"></td>
</tr>

<tr>
  <td>title:</td>
  <td><input type="text" name="title"></td>
</tr>

<tr>
  <td><b>first name:</b></td>
  <td><input type="text" name="firstname"></td>
</tr>

<tr>
  <td>middle name:</td>
  <td><input type="text" name="middlename"></td>
</tr>

<tr>
  <td><b>last name:</b></td>
  <td><input type="text" name="lastname"></td>
</tr>

<tr>
  <td><b>primary email:</b></td>
  <td><input type="text" name="email"></td>
  <td width="20">&nbsp;</td>
  <td>secondary email:</td>
  <td><input type="text" name="secondaryemail"></td>
</tr>

<tr>
  <td>company name:</td>
  <td><input type="text" name="companyname"></td>
</tr>

<tr>
  <td>office address:</td>
  <td><input type="text" name="officeaddres1"></td>
  <td width="20">&nbsp;</td>
  <td>home address:</td>
  <td><input type="text" name="homeaddress"></td>
</tr>

<tr>
  <td></td>
  <td><input type="text" name="officeaddress2"></td>
</tr>

<tr>
  <td>city:</td>
  <td><input type="text" name="officecity"></td>
  <td width="20">&nbsp;</td>
  <td>&nbsp;</td>
  <td><input type="text" name="homecity"></td>
</tr>

<tr>
  <td>state:</td>
  <td><input type="text" name="officestate"></td>
  <td width="20">&nbsp;</td>
  <td>&nbsp;</td>
  <td><input type="text" name="homestate"></td>
</tr>

<tr>
  <td>zip:</td>
  <td><input type="text" name="officezip"></td>
  <td width="20">&nbsp;</td>
  <td>&nbsp;</td>
  <td><input type="text" name="homezip"></td>
</tr>

<tr>
  <td>phone:</td>
  <td><input type="text" name="officephone"></td>
  <td width="20">&nbsp;</td>
  <td>&nbsp;</td>
  <td><input type="text" name="homephone"></td>
</tr>

<tr>
  <td>birthday:</td>
  <td><input type="text" name="birthday"></td>
</tr>

<tr>
  <td>spouse name:</td>
  <td><input type="text" name="spousename"></td>
  <td width="20">&nbsp;</td>
  <td>childrens' names:</td>
  <td><input type="text" name="children"></td>
</tr>

<tr>
  <td>anniversary:</td>
  <td><input type="text" name="anniversary"></td>
</tr>

</table>

<br>
<br>
<br>
<input type="submit" value="submit">
<br>
<br>
<input type="reset"  value="clear the form">

</form>
</body>
</html>

<!-- formerrorcheck.php
<html>
<body>
<?php

  $errors=0;
  if (!trim($nickname)) {
      echo "<br><b>nickname</b> is required.";
     $errors++;
  }
 
  if (!trim($firstname)) {
      echo "<br><b>first name</b> is required.";
     $errors++;
  }
 
  if (!trim($lastname)) {
      echo "<br><b>last name</b> is required.";
      $errors++;
  }
 
  if (!trim($email)) {
      echo "<br><b>primary email address</b> is required.";
      $errors++;
  }

  if ($errors > 0)
      echo "<br><br><br>please use your browser's back button " .
        "to return to the form, and correct error(s)";
 
?>

</body>
</html>


这是个简单的验证函数

 

<?php
    function phone_validate($data, $desc) {
        $regex = "/^([2-9][0-9]{2})[2-9][0-9]{2}-[0-9]{4}/i";
        if(preg_match($regex, $data) != 1) {
            return "the '$desc' field isn't valid!";
        }
        return true;
    }
?>
 

检测数据类型php教程函数集

检测数据类型即对数据类型进行检测,判断所检测类型是否属于检测类型,符合则返回真,否则返回假。检测数据类型定义如下:

is_bool

是否为布尔类型,例,is_bool(srue)  is_bool(false)


is_string

是否为字符串型,例,is_string(‘string’)  is_string(1234)


is_float/double

是否为浮点型,例,is_float(3.1415)  is_float(‘3.1415’)


is_integer/int

是否为整型,例,is_integer(34)  is_integer(‘34’)


is_null

是否为空值,例,is_null(null)


is_array

是否为数组,例,is_array($arr)


is_object

是否为一个对象,例,is_object($obj)


is_numeric

是否为数字或由数字组成的字符串,例,is_numeric(‘5’)  is_numeric(‘bcc110’)

 

示例

<?php

$boo="1234567890";

if(is_numeric($boo))

echo "变量boo属由数字组成的字符串类型:".$boo;

else

echo"无法判断";

?>

 

php教程 strtotime()计算今天与指定日期之天数

$date1 = strtotime('2011-04-30'); //把日期转换成时间戳
$date2 = time(); //取当前时间的时间戳

$nowtime=strftime("%y年-%m月-%d日 ",$date2); //格式化输出日期

$days=round(($date1-$date2)/3600/24); //四舍五入

echo "今天是<font color="red">".$nowtime."</font>";
echo "<br/>距".strftime("%y年-%m月-%d日 ",$date1)."还有<font colr="red">".$days."</font>天";

echo date("y-m-d h:i:s",strtotime("now")). "<br />";
echo date("y-m-d h:i:s",strtotime("10 september 2000")). "<br />";
echo date("y-m-d h:i:s",strtotime("+2 day")). "<br />";
echo date("y-m-d h:i:s",strtotime("+1 week")). "<br />";
echo date("y-m-d h:i:s",strtotime("+1 week 2 days 4 hours 2 seconds")). "<br />";
echo date("y-m-d h:i:s",strtotime("next thursday")). "<br />";
echo date("y-m-d h:i:s",strtotime("last monday")). "<br />";
echo date("y-m-d h:i:s",strtotime("+3 day",strtotime('2001-01-01')));

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • Php文件上传类class.upload.php用法示例

    本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • js实现上传图片及时预览

    这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • jQuery实现简单的文件上传进度条效果

    本文实例讲述了jQuery实现文件上传进度条效果的代码。分享给大家供大家参考。具体如下: 运行效果截图如下:具体代码如下:<!DOCTYPE html><html><head><meta charset="utf-8"><title>upload</title><link rel="stylesheet...2015-11-24
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • ant design中upload组件上传大文件,显示进度条进度的实例

    这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25
  • php实现文件下载实例分享

    举一个案例:复制代码 代码如下:<?phpclass Downfile { function downserver($file_name){$file_path = "./img/".$file_name;//转码,文件名转为gb2312解决中文乱码$file_name = iconv("utf-8","gb2312",$file_name...2014-06-07