php实现附件上传下载,PHP实现文件上传与下载

本文详细介绍了PHP实现文件上传的原理及步骤,包括客户端配置、服务器端配置和相关PHP函数的使用,如move_uploaded_file。同时强调了服务器端限制的重要性,如限制文件大小、类型、POST数据量等,以确保安全。此外,还提到了如何检测文件真实性及防止哈希碰撞攻击。

文件上传原理:

将客户端的文件上传到服务器端,再将服务器端的临时文件移动到指定目录即可。

客户端配置:

1.表单页面

2.表单的发送方式为post

3.添加enctype=”multipart/form-data”

$_FILES中保存着上传文件的信息

name:上传文件的名称

type:上传文件的MIME类型

tmp_name:上传到服务器上的临时文件名

size:上传文件大小

error:上传文件的错误号

move_uploaded_file(tmpname,destination):将服务器上临时文件移动到指定目录,并命名。

如:

move_uploaded_file(tmpname,"uploads/".filename);

还有:

copy(src,dst);

文件上传配置:php.ini

服务器端配置:

file_uploads = on ,支持HTTP上传

upload_tmp_dir= ,临时文件保存的目录

upload_max_filesize = 2M,允许上传文件的最大值

max_file_uploads = 20,允许一次上传的最大文件数

post_max_size = 8M,POST方式发送数据的最大值

max_execution_time = -1,设置了脚本被解析器终止之前允许的最大执行时间,单位为秒,防止程序写的不好而占尽服务器资源

max_input_time = 60,脚本解析输入数据允许的最大时间,单位是秒

max_input_nesting_level = 64,设置输入变量的嵌套深度

max_input_vars = 1000,接受多少输入的变量(限制分别应用于GET,_POST,$_COOKIE超全局变量)指令的使用减轻了以哈希碰撞来进行拒绝服务攻击的可能性。如有超过指令指定数量的变量,将会导致E_WARING的产生,更多的输入变量将会从请求中截断。

memory_limit = 128M,最大单线程的独立内存使用量。也就是一个web请求,给与线程最大的内存使用量的定义。

d19e16590d79eb0ffb29b9c968a07638.png

2de286f892d14a57c5bba0c065df4fa3.png

993fc54f8a04b216f6aa3b8b76587ffd.png

注意:在客户端限制的代码,可以通过在浏览器中修改代码,而使限制没有用。所以限制都应该在服务器端。

服务器端限制:

限制上传文件大小(通过size)

限制上传文件类型(in_array(后缀,数组),判断文件后缀是否在指定规定类型的数组里)

检测是否为真实图片类型(getimagesize)

检测是否为HTTP POST方式上传(is_uploaded_file,返回true表示是通过PHP的post方式上传的)

生成唯一字符串:

md5(uniqid(microtime(true),true))').addClass('pre-numbering').hide();

$(this).addClass('has-numbering').parent().append($numbering);

for (i = 1; i <= lines; i++) {

$numbering.append($('

').text(i));

};

$numbering.fadeIn(1700);

});

});

以上就介绍了PHP实现文件上传与下载,包括了文件上传,php方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值