PHP基础教程_零基础学习PHP_PHP基础教程_兄弟连PHP教程_文件上传.ppt
文本预览下载声明
* * * * * * * * * PHP文件上传机制 与文件系统和服务器的交互 文件上传 使用目录函数 与文件系统的交互 使用程序执行函数 与环境变量交互 文件上传 在B/S程序中文件上传已经成为一个常用功能。其目的是客户可以通过浏览器(Browser)将文件上传到服务器(Server)上的指定目录。 PHP中文件上传的基础知识 表单提交 对文件的操作 何为文件上传? 传统上的HTML表单只能提交普通文本内容或数值信息。如: input type = text name=xx input type = password name = xx 这种方法无法实现某些系统功能: 如:带附件的电子邮件等。 为了满足传递文件信息的需要:HTTP协议实现了文件上传机制,从而可以将客户端的文件通过自己的浏览器上传到服务器上指定目录存放。 HTML规范规定上传文件时表单头必须使用 html headtitle文件上传/title/head bodyform action=todo.php method=post enctype=“multipart/form-data” input type=hidden name= MAX_FILE_SIZE value=100000上传文件:input type=file name=myfilename提交:input type=submit value=提交查询/form /body /html 显示在浏览器上效果如下: POST方法: 表单最常用的功能,向目标页面传递变量,我们在上传文件的时候,会在表单中设置相应的属性,来完成文件的传递 注意几个特征属性: enctype=multipart/form-data 这样服务器就会知道,我们要传递一个文件,这样服务器可以知道上载的文件带有常规的表单信息。 MAX_FILE_SIZE 控制最大的传递文件的大小(字节) ?真的可以控制吗 input type=file name=userfile 设置浏览器浏览按钮效果 MAX_FILE_SIZE的值只是对浏览器的一个建议,实际上可以被简单的攻击,我们不要对浏览器端的限制寄予什么希望,它只能避免君子的错误输入,对于普通的web工程师都会跳过浏览器端的限制。 但是最好还是在表单上使用MAX_FILE_SIZE,因为对于善意的错误我们可以帮助纠正,避免用户花费很长的时间等待大文件上传,传了半天,才发现无法上传。 表单提交以后,数据被发送给action的属性指定的PHP程序,这时表单已经完成了它的任务。 静态表单与程序脚本之间的沟通仅仅通过action属性,因此表单可以在任何地方被伪造,如果您的程序完全相信表单提交的数据,就会被木马屠城 我们在服务器端的php.ini中设置对表单传递的数据进一步判断 file_uploads = On /Off 是否允许文件上传 upload_max_filesize = 2M 上传的文件的最大大小 post_max_size = 8M POST 数据所允许的最大大小 表单传递的数据,文件只是其中的一部分 所以设置时,upload_max_filesize应该小于post_max_size 超级全局数组$_FILES PHP程序中,需要处理的上传数据保存在全局数组中$_FILES(超级全局数组) 保存$_FILES数组中的元素,将HTML表单的type=file标记的名称name=userfile 存放在数组中。 1:存储在$_FILES[userfile][name]中的值就是: 客户端文件系统的文件的名称 2:存储在$_FILES[userfile][type]中的值就是: 客户端传递的文件的类型 超级全局数组$_FILES 3:存储在$_FILES[userfile][size]中的值就是: 文件的字节的大小 4:存储在$_FILES[userfile][tmp_name]中的值就是: 文件被上传后在服务器存储的临时全路径 5:存储在$_FILES[userfile][error]中的值就是: 文件上传的错误代码-php 4.2以后增加的功能 存储在$_FILES[userfile][error]中的值 在$_FILES[userfile][error]中返回的错误代码是在PHP4.2.0版本中引入的。具体如下: 值为0:表示没有发生任何错误。 值为1:表示上载文件的大小超出了约定值。文件大小的最大值是在PHP配置文件中指定的,该指令是:upload_max_filesize。 值为2:表示上载文件大小超出了HTML表单的MAX_FILE_SIZE元素所指定的最大值。 值为3:表示文件只被部分上载。 值为4:表示没有上载任何文
显示全部