码迷,mamicode.com
首页 > Web开发 > 详细

php实现文件上传与下载

时间:2015-10-29 19:46:25      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

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类型" />

php实现文件上传与下载

标签:

原文地址:http://www.cnblogs.com/jellyhui/p/4921297.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!