PHP语言大牛开发笔记(6)——文件的上传下载
小标 2018-07-12 来源 : 阅读 949 评论 0

摘要:本文主要向大家介绍了PHP语言大牛开发笔记(6)——文件的上传下载,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。

本文主要向大家介绍了PHP语言大牛开发笔记(6)——文件的上传下载,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。

一、文件的上传

1、客户端设置:

(1)、在<form>标签中将enctype和method两个属性指明相应的值。

Enctype="multipart/form-data"; Method="POST"

(2)、form表单中设置一个hidden类型的input框,其中name的值为MAX_FILE_SIZE的隐藏值

2、服务器端设置:

(1)、$_FILES多维数组:用于存储各种上传文件有关的信息

(2)、文件上传与php配置文件的设置,如以下php.ini文件中的一些指令

指令 默认值 功能描述

file_uploads ON 确定服务器上的PHP脚本是否可以接受HTTP文件上传

memory_limit 8M 设置脚本可以分配的最大内存量,防止失控的脚本独占服务器内存

upload_max_file 2M 限制PHP处理上传文件大小的最大值,此值必须小于POST_MAX_SIZE值

post_max_size 8M 限制通过POST方法可以接受信息的最大值

upload_tmp_dir NULL 上传文件的临时路径,可以是一个绝对路径

 

[php] view plain copy

1. <html>  

2.     <head>  

3.         <title>file</title>  

4.     </head>  

5.     <body>  

6.         <form name="form1" method="post" action="upload.php" enctype="multipart/form-data">  

7.             file:<input type="file" name="file"/><br>  

8.             <input type="hidden" name="MAX_FILE_SIZE" value="1000000"/>  

9.             <input type="submit" value="fileUpload"/>  

10.             <input type="reset" value="reset"/>  

11.         </form>  

12.     </body>  

13. </html>  

 

3、PHP的文件上传及资源指令

file_uploads(boolean)

是否开启HTTP POST文件上传功能

max_execution_time(integer)

PHP脚本最长执行时间

memory_limit(integer) 单位M

PHP脚本运行的最大内存

upload_max_filesize(integer) 单位M

PHP上传文件的最大尺寸

upload_tmp_dir(string)

上传文件存储的临时位置

post_max_size(integer) 单位M

HTTP POST数据的最大尺寸

4、$_FILES数组

$_FILES['userfile'][size]

获取上传文件的字节数

$_FILES['userfile']['type']

获取上传文件的MIME类型,每种MIME类型都是由“/”分隔的主类型和子类型组成

$_FILES['userfile']['error']

获取上传文件的错误代码,0:无任何错误,文件上传成功;1:上传文件大小超出了PHP配置文件中upload_max_filesize选项限定的值;2:上传文件大小超出了HTML表单中MAX_FILE_SIZE指定的值;3:表示文件只被部分上传;4:表示没有上传任何文件。

$_FILES['userfile']['name']

获取上传文件的原始名称,包含扩展名

$_FILES['userfile']['tmp_name']

获取上传文件的临时位置名称,这是存储在临时目录中所指定的文件名。

5、文件上传函数

is_upload_file

判断指定的文件是否是通过HTTP POST上传

bool is_upload_file(string $filename)

move_upload_file

将上传文件移至新位置

bool move_upload_file(string $filename, string $destination)

注意:文件上传后,首先会存储于服务器的临时目录中,可以使用该函数将上传文件移动到新位置,与copy()和move()相比,它能检测并确保第一个参数filename指定的文件是否是合法上传的文件。

6、错误信息描述

UPLOAD_ERR_OK{value=0}

UPLOAD_ERR_INI_SIZE{value=1}

UPLOAD_ERR_FORM_SIZE{value=2}

UPLOAD_ERR_PARTIAL{value=3}

UPLOAD_ERR_NO_FILE{value=4}

UPLOAD_ERR_NO_TMP_DIR{value=6}

UPLOAD_ERR_CANT_WRITE{value=7}

[php] view plain copy

1. <?php  

2.     print_r($_FILES);     

3. ?>  

 

二、文件下载

简单文件下载只需要使用HTML的链接标记<a>,并将属性href的URL值指定下载的文件即可。这种方法只能处理一些浏览器不能识别的MIME类型文件。

[php] view plain copy

1. <html>  

2.     <head>  

3.         <title>file</title>  

4.     </head>  

5.     <body>  

6.         <a href="php.zip">php.zip文件下载</a>  

7.     </body>  

8. </html>  

 

为了提高安全性,不希望在a标签中给出文件链接,则必须向浏览器发送必要的头信息,我们可以使用如下代码。

[php] view plain copy

1. <?php   

2.     //发送指定文件MIME类型的头信息  

3.     header("content-type:application/x-msdownload");  

4.       

5.     $fileName=$_GET['fileNmae'];  

6.     $path="[$fileName]";  

7.     //发送描述文件的头信息,附件和文件名  

8.     header(content-disposition:attachment:filename=[$fileName]);  

9.       

10.     readfile($path);  

11. ?>  

三、文件函数库

touch

设置文件的访问和修饰时间

bool touch(string $filename[, int $time[, int $time]])

copy

复制文件

bool copy(string $source, string $dest)

注意:移动文件请使用rename函数

file_put_contents

将一个字符串写入文件

int file_put_contents(string $filename, string $data[, int $flag[, resource $content]])

file_get_contents

将整个文件读到字符串

string file_get_contents(string $filename[, bool user_include_path [, resource $content[, int $offset[, int $maxlen]]]])

 

四、序列化与反序列化

serialize

序列化

string serialize(mixed $value)

注意:serialize()可处理除了resouce之外的任何类型。甚至可以serialize()那些包含了指向其自身引用的数组。

unserialize

反序列化

mixed unserialize(string $str)

[php] view plain copy

1. <?php   

2. $var="abcdefj";  

3.   

4. //序列化  

5. $arr=serialize($var);  

6. echo '序列化<br>';  

7. var_dump($arr);  

8. echo '<br>';  

9.   

10. //反序列化  

11. echo '反序列化<br>';  

12. $arr1=unserialize($arr);  

13. var_dump($arr1);  

14. echo '<br>';  

15. ?>  

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言PHP频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程