php 文件上传入门教程

 更新时间:2016年11月25日 15:14  点击:1877
php在文件上传方面比起asp来说方便了很多,记得用asp文件上传时那麻烦了,现在我们下看看php 文件上传入门教程吧。

一.表单提交:
接收普通表单信息的数组有: $_GET    $_POST    $_REQUEST<不能确定表单的接收方式>
接收文件上传信息的函数有: $_FILES
同时做多个上传文件的表单的时候,表单不能同名.
如果要做文件上传<form>表单必须要改加的:
1.method="post"
2.enctype="multipart/form-data"
3.要加的:<input type="hidden" name="MAX_FILE_SIZE" value="100000">
二.对文件的操作:
text 文件类型:
text/html    .html    .htm
text/plain    .txt    .log
image 图片类型:
image/gif    .gif
image/jpeg    .jpeg    .jpg
image/png    .png
audio 声音类型:
audio/x-midi  mid    .midi    ,mid
audio/x-wav    .wav
video/quicktime    .qt    .mov
video/mpeg    .mpeg
application 文件类型:
application/pdf    .pdf
application/msword    .doc    dot
application/vnd.ms-excel    .xls
application/vnd.ms-powerpoint    .ppt
application/zip    .zip
application/rar    .rar
application/xml    .xml    .xsl
application/mshelp    .hlp    .chm
application/octet-stream    .ext    .bin    .com    .dll    .class
is_uploaded_file(目标文件名称) 判断是否是上传文件的函数.
move_uploaded_file(1.目标文件名称 2.移动到的位置名称) 将上传的文件移动到新的位置的函数.

转载注明:www.111cn.net/phper/php.html

在很多编程语言中引用(&)是少不了的,下面我们来看看php引用(&)实例教程

php的引用(就是在变量或者函数、对象等前面加上&符号)

在PHP 中引用的意思是:不同的名字访问同一个变量内容.
与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存放的地址

变量的引用

PHP 的引用允许你用两个变量来指向同一个内容
复制PHP内容到剪贴板
PHP代码:

<?
$a="ABC";
$b =&$a;
echo $a;//这里输出:ABC
echo $b;//这里输出:ABC
$b="EFG";
echo $a;//这里$a的值变为EFG 所以输出EFG
echo $b;//这里输出EFG
?>


函数的传址调用
传址调用我就不多说了 下面直接给出代码
复制PHP内容到剪贴板
PHP代码:
function test(&$a)
{
$a=$a+100;
}
$b=1;
echo $b;//输出1
test($b);  //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了
echo "<br>";
echo $b;//输出101


要注意的是,在这里test(1);的话就会出错,原因自己去想

函数的引用返回
先看代码
复制PHP内容到剪贴板
PHP代码:
function &test()
{
static $b=0;//申明一个静态变量
$b=$b+1;
echo $b;
return $b;
}

$a=test();//这条语句会输出 $b的值 为1
$a=5;
$a=test();//这条语句会输出 $b的值 为2

$a=&test();//这条语句会输出 $b的值 为3
$a=5;
$a=test();//这条语句会输出 $b的值 为6


下面解释下: 
通过这种方式$a=test();得到的其实不是函数的引用返回,这跟普通的函数调用没有区别 至于原因: 这是PHP的规定
PHP规定通过$a=&test(); 方式得到的才是函数的引用返回
至于什么是引用返回呢(PHP手册上说:引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。) 这句狗屁话 害我半天没看懂

用上面的例子来解释就是
$a=test()方式调用函数,只是将函数的值赋给$a而已, 而$a做任何改变 都不会影响到函数中的$b
而通过$a=&test()方式调用函数呢, 他的作用是 将return $b中的 $b变量的内存地址与$a变量的内存地址 指向了同一个地方
即产生了相当于这样的效果($a=&b;) 所以改变$a的值 也同时改变了$b的值 所以在执行了
$a=&test();
$a=5;
以后,$b的值变为了5

这里是为了让大家理解函数的引用返回才使用静态变量的,其实函数的引用返回多用在对象中

对象的引用
复制PHP内容到剪贴板
PHP代码:

<?
class a{
 var $abc="ABC";
 }
$b=new a;
$c=$b;
echo $b->abc;//这里输出ABC
echo $c->abc;//这里输出ABC
$b->abc="DEF";
echo $c->abc;//这里输出DEF
?>


以上代码是在PHP5中的运行效果
在PHP5中 对象的复制 是通过引用来实现的。上列中$b=new a; $c=$b; 其实等效于$b=new a; $c=&$b;
PHP5中默认就是通过引用来调用对象, 但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本 . 为了这样的目的,PHP定义了一个特殊的方法,称为__clone.

引用的作用
如果程序比较大,引用同一个对象的变量比较多,并且希望用完该对象后手工清除它,个人建议用 "&" 方式,然后用$var=null的方式清除. 其它时候还是用php5的默认方式吧. 另外, php5中对于大数组的传递,建议用 "&" 方式, 毕竟节省内存空间使用。


取消引用
当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。例如:

<?php
$a = 1;
$b =& $a;
unset ($a);
?> 

不会 unset $b,只是 $a。


global 引用
当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用。也就是说和这样做是相同的:

<?php
$var =& $GLOBALS["var"];
?> 

这意味着,例如,unset $var 不会 unset 全局变量。

$this
在一个对象的方法中,$this 永远是调用它的对象的引用。


//下面再来个小插曲
php中对于地址的指向(类似指针)功能不是由用户自己来实现的,是由Zend核心实现的,php中引用采用的是“写时拷贝”的原理,就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。

通俗的讲
1:如果有下面的代码
复制PHP内容到剪贴板
PHP代码:
$a="ABC";
$b=$a;


其实此时 $a与$b都是指向同一内存地址 而并不是$a与$b占用不同的内存

2:如果在上面的代码基础上再加上如下代码
复制PHP内容到剪贴板
PHP代码:
$a="EFG";


由于$a与$b所指向的内存的数据要重新写一次了,此时Zend核心会自动判断 自动为$b生产一个$a的数据拷贝,重新申请一块内存进行存储

在php在上传文件简单到了极点哦,我们只要用php自带的函数move_uploaded_file就可以快速的开发出文件上传功能哦。

第十章(1)文件上传(一)
一.表单提交:
接收普通表单信息的数组有: $_GET    $_POST    $_REQUEST<不能确定表单的接收方式>
接收文件上传信息的函数有: $_FILES
同时做多个上传文件的表单的时候,表单不能同名.
如果要做文件上传<form>表单必须要改加的:
1.method="post"
2.enctype="multipart/form-data"
3.要加的:<input type="hidden" name="MAX_FILE_SIZE" value="100000">
二.对文件的操作:
text 文件类型:
text/html    .html    .htm
text/plain    .txt    .log
image 图片类型:
image/gif    .gif
image/jpeg    .jpeg    .jpg
image/png    .png
audio 声音类型:
audio/x-midi  mid    .midi    ,mid
audio/x-wav    .wav
video/quicktime    .qt    .mov
video/mpeg    .mpeg
application 文件类型:
application/pdf    .pdf
application/msword    .doc    dot
application/vnd.ms-excel    .xls
application/vnd.ms-powerpoint    .ppt
application/zip    .zip
application/rar    .rar
application/xml    .xml    .xsl
application/mshelp    .hlp    .chm
application/octet-stream    .ext    .bin    .com    .dll    .class
is_uploaded_file(目标文件名称) 判断是否是上传文件的函数.
move_uploaded_file(1.目标文件名称 2.移动到的位置名称) 将上传的文件移动到新的位置的函数.

在php中保存的方式有两种:1.写入文件. 2.写入数据库. php对文件系统的操作是基于Unix或Linux系统的. fopen(1.目标文件名称 2.文件打开方式) 打开文件的函数

第九章(1)文件系统处理
在php中保存的方式有两种:1.写入文件. 2.写入数据库.
php对文件系统的操作是基于Unix或Linux系统的.
fopen(1.目标文件名称 2.文件打开方式) 打开文件的函数.
目标文件名称:
windows : C:\test\test.txt C:\test/test.txt
linux :  /root/test/test.txt
文件打开方式:
r :以读的方式打开文件.
r+ :以读和写的方式打开文件,并将文件指针指向文件开始.
w :以写的方式打开文件,如果该文件包含任何数据,则数据将丢失,如果文件不存在,则创建文件.
w+ :以读和写的方式打开文件,如果该文件包含任何数据,则数据将丢失,如果该文件不存在,则创建文件.
a :以写的方式打开文件,将文件指针指向末尾,如果该文件不存在,则创建文件.
a+ :以读和写的方式打开文件,将文件指针指向文件末尾,如果该文件不存在,则创建文件.
x :创建并以写入方式打开,将文件见指针指向文件头,如果文件已存在,则fopen()调用失败返回FALSE,并 生成一条E_WARNING级别的错误信息,如果文件不存在则尝试创建文件,这个参数仅能用于本地文件.
x+ :创建并以写入方式打开,其它与x的功能完全相同.
fwrite(1.目标文件名称 2.要写入的内容 3.写入的长度) 写入文件的函数.
fclose(目标文件名称) 关闭文件的函数.
fread(1.目标文件名称 2.读取长度) 读取文件的函数.<如果要读取全文,可以使用filesize(目标文件名称) 获取全文的长度>
fgets(1.目标文件名称 2.可选参数,读取一行里面的长度) 读取文件里面一行的函数.
fgetc(目标文件名称) 读取文件里面一个字符的函数.
file(目标文件名称) 不用打开和关闭就可以直接读取文件的函数,但返回的是以换行为单位的数组.
readfile(目标文件名称) 不用打开和关闭文件,直接输出目标文件里面的所有内容的函数.
用文件写入和文件读取做计数器的实例:
$jishu="jishu.txt";
if(!file_exists($jishu))
{
 $kjs = fopen($jishu,"w");
 fwrite($kjs,0);
 fclose($kjs);
}
function kaishi($jishu)
{
 $js = fopen($jishu,"r");
 $du = fread($js,8);
 fclose($js);
 $du += 1;
 echo "你是本站的第".$du."位访客!!!";
 $xie = fopen($jishu,"w");
 fwrite($xie,$du);
 fclose($xie);
}
    kaishi($jishu);
输出结果:打开的计数器被访问了几次就会输出几.
file_get_contents(目标文件名称) 不用打开和关闭文件就可以直接读取文件的函数,但将整个文件返回一个字符串.
file_put_contents(1.目标文件名称 2.要写入的内容) 不用打开和关闭文件就可以直接写入文件的函数.
flock(1.目标文件名称 2.选择以下参数) 文件锁定的函数.
锁定文件的参数可选:
LOCK_SH :共享锁定,读取文件的时候使用.
LOCK_EX :独占锁定,写入文件的时候使用.
LOCK_UN :释放锁定.
LOCK_NB :附加锁定,避免文件同时被多人锁定的时候使用.
ftell(目标文件名称) 返回文件指针当前位置的函数.
fseek(1.目标文件名称 2.移动的字节数 3.起始位置选择参数) 移动文件指针到指定位置的函数.
起始可选择参数有:
SEEK_SET :起点位置    SEEK_CUR :当前位置    SEEK_END :末尾位置
rewind(目标文件名称) 移动文件指针到文件开头的函数.
cpoy(1.目标文件名称 2.拷贝到的文件名称) 拷贝文件的函数.
unkink(目标文件名称) 删除文件的函数.
rename(1.目标文件名称 2.新文件名称) 文件的重命名函数.
ftruncate(1.目标文件名称 2.要截取的长度) 截取文件内容的函数.
filectime(目标文件名称) 获取文件创建时间的函数.
filemtime(目标文件名称) 获取文件更改时间的函数.
fileatime(目标文件名称) 获取文件上一次访问时间的函数.
file_exists(目标文件名称) 判断文件或目录是否存在的函数.
filesize(目标文件名称) 获取文件大小的函数.
filetype(目标文件名称) 获取文件类型的函数.
is_dir(目标文件名称) 判断文件是否是目录的函数.
is_file(目标文件名称) 判断文件是否是正常文件的函数.
is_link(目标文件名称) 判断文件是否是符号连接文件的函数.
is_executable(目标文件名称) 判断文件是否是可以执行的文件的函数.
is_readable(目标文件名称) 判断文件是否是可读文件的函数.
is_writable(目标文件名称) 判断文件是否是可写文件的函数.
chmod(1.目标文件名称 2.权限长度) 修改文件权限的函数.
chown(1.目标文件名称 2.要拥有者的ID) 修改文件拥有者的函数.
chgrp(1.目标文件名称 2.要拥有组的ID) 修改文件拥有组的函数.
fileowner(目标文件名称) 获取文件拥有者的函数.
filegroup(目标文件名称) 获取文件拥有组的函数.

preg_replace(1.正则模式 2.替换成的字符串 3.要被替换的字符串在哪里面 4.替换的次数) 执行正则表达式的搜索和替换.preg_match,preg_match_all

第八章(4)正则表达式处理函数(一)
e :可以把替换出来的结果当成php函数执行.
preg_replace(1.正则模式 2.替换成的字符串 3.要被替换的字符串在哪里面 4.替换的次数) 执行正则表达式的搜索和替换.
preg_split(1.正则模式 2.要被分割的字符串名称) 执行表达式的分割.
preg_match(1.正则模式 2.要被匹配的字符串组 3.匹配后已知次数及内容的数组名称) 进行正则表达式匹配.
preg_match_all(1.正则模式 2.要被匹配的字符串组 3.匹配后已知次数及内容的数组名称) 进行全局正则表达式匹配.
preg_grep(1.正则模式 2.要被匹配的数组名称) 返回与模式匹配的单元.

[!--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
  • PHP文件上传一些小收获

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

    这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
  • 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
  • C#路径,文件,目录及IO常见操作汇总

    这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25
  • ant design中upload组件上传大文件,显示进度条进度的实例

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