PHP文件上传机制
与文件系统和服务器的交互
文件上传
使用目录函数
与文件系统的交互
使用程序执行函数
与环境变量交互
文件上传
在B/S程序中文件上传已经成为一个常用功能。其目的是客户可以通过浏览器(Browser)将文件上传到服务器(Server)上的指定目录。
PHP中文件上传的基础知识
表单提交
对文件的操作
何为文件上传?
传统上的HTML表单只能提交普通文本内容或数值信息。如:
<input type = text name=xx>
<input type = password name = xx>
这种方法无法实现某些系统功能:
如:带附件的电子邮件等。
为了满足传递文件信息的需要:HTTP协议实现了文件上传机制,从而可以将客户端的文件通过自己的浏览器上传到服务器上指定目录存放。
HTML规范规定上传文件时表单头必须使用
<html>
<head><title>文件上传</title></head>
<body><form action= 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属性,因此表单可以在任何地方被伪造,如果您的程序完全相信表单提交的数据,就会被<木马屠城>
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']中的值就是:
客户端传递的文件的类型
郎酒(促销员)促销技能指导手册 来自淘豆网m.daumloan.com转载请标明出处.