php实现文件的上传与下载是一个挺基本的功能,一般网站多多少少都会有这样的需求在内,当然不是说所有的文件都可以被上传,那这网络就太没有安全性可言了。因为接触php时间不长,今天写练练手,随笔也就是公开记录而已啦。
文件上传:也就是将客户端的文件上传到服务器端,在将服务器端的临时文件移动到指定目录即可。主要思维就是先定义获取$_FILES中的二维数组变量,可以每次都用二维数组获取,也可以将第一维的放入一个数组变量中,然后每次获取该数组变量中的值,简化代码量----> 判断错误号是否为0或者是UPLOAD_ERR_OK为真时表示没有错误,可以上传----->将服务器上的临时文件移动到我们的指定目录下,叫什么名字,移动成功返回true,用move_uploaded_file($临时文件名,$目的地)----->另外一种方式就是用copy($临时变量名,$目的地)函数;
- $_FILES中保存这儿上传文件的信息,这是一个二维数组,第一维当然就是上传进来的文件的名称了,第二维就是该文件的相关信息了,上传之后就可以打印该数组中的参数进行查看---用print_r($_FILES),可以看到里边的内容有:
- name:上传文件的名称;
- type:上传文件的MIME类型;
- tmp_name:上传到服务器上的临时文件名;//很重要的,因为以后在服务器上操纵的就是这个文件
- size:上传文件的大小;
- error:上传文件的错误号,成功为0,。
服务器端配置---php.ini:
- file_uploads=on,支持http上传;
- upload_tmp_dir=,临时文件保存的目录;
- upload_max_filesize= 2M ;允许上传文件的大小;
- max_file_uploads=20; 允许一次上传文件数目,默认为20;
- max_execution_time=-1;设置脚本被解析终止之前允许的最大执行秒数,防止程序太差(例如死循环)而占尽服务器资源;
- max_input_time=60;脚本解析输入数据允许的最大秒数;
- max_input_nesting_level=64,设置输入变量的嵌套深度;
- max_input_vars=60;接受多少输入的变量,减轻dos攻击的可能性,如果超过指定数量的变量,将会导致E_WARNING的产生,更多的输入变量将会从请求中截断;
- memory_limit=128M。最大单线程的独立内存使用量,也就是一个web请求,给予线程的最大内存使用量的定义。
还有一些错误信息说明,基本都是英文的字面意思,找不见临时目录啊大小超过限制啊之类的共8中错误信息,分别对应数字0-8但是没有数字5,在代码里进行判定输出,按照一一对应的,可以用switch……case,共7个case(0表示成功就不用写了)来表示输出错误信息。在代码中进行判定,如果没错误输出的话,就进行上传操作。
客户端的一些配置---但是在客户端的配置很多时候并不能真正起到限制作用:
- 通过表单隐藏域限制上传文件的最大值 <input type="hidden" name="MAX_FILE_SIZE" value="字节数" />
- 通过accept属性限制上传文件类型 <input type="file" name="myFile" accept="文件的MIME类型" />
时间: 2024-10-25 12:15:56