php上传下,PHP文件的上传与下载

今天给大家介绍的是PHP文件的上传与下载,分为两部分,第一部分:文件的上传,第二部分:文件的下载;

一.文件的上传

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

客户端:准备一个表单页面,表单的发送方式为post,并且添加enctype="multipart/form-data",记住:发送方式一定为post,并且form里面一定要添加enctype="multipart/form-data",两者缺一不可。

以下为客户端的简单实现代码:

7f8b018c9d6b

服务器:用PHP预定义变量$_FILES来接收传过来文件,以下为客户端接收页面的截图:

7f8b018c9d6b

$_FILES变量解析,以下为截图:

7f8b018c9d6b

数组解析:myfile为表单提交页面自定义的name;name为上传文件的名字;type为上传文件的原始名称;tmp_name为上传文件的临时保存文件的位置;error为上传文件的错误信息;size为上传文件的大小;

服务端保存文件的两种方式:

第一种:通过move_uploaded_file($tmp_name,$filename)函数实现,以下为截图:

7f8b018c9d6b

第二种:通过copy()函数实现,以下为截图:

7f8b018c9d6b

文件上传常规配置解析,这些配置选项都在php.ini文件中,以下为截图:

7f8b018c9d6b

文件上传的其他配置解析,以下为截图:

7f8b018c9d6b

上传文件错误信息说明,以下为截图:

7f8b018c9d6b

客户端上传文件限制,以下为截图:

7f8b018c9d6b

服务器端上传文件限制(单文件上传实例):以下为截图:

7f8b018c9d6b

7f8b018c9d6b

7f8b018c9d6b

二.文件的下载

文件的下载一种是可以通过表单的超链接方式实现,这个主要是实现浏览器不识别的文件类型,例如:

7f8b018c9d6b

对于一些浏览器识别的文件,比如图片,视频来说就要通过PHP代码来实现了,以下为实现过程:

7f8b018c9d6b

上面的这种方式虽然实现了文件的下载,但是也是有他的缺陷性的,比如不能批量下载,而且下载完之后浏览器的页面会跳转,严重影响我们的业务,下面的这种方式就解决了这个问题。<?php

/**

*@params string $url 要下载的文件地址

*@params string $filePath 要保存的文件位置

*/

function downFile($url,$filePath){

if($url=='' || $url==NULL){

return "下载地址不能为空";

}

$ext_name = strrchr($url,'.');//获取文件的扩展名

ob_start();//打开输出缓冲区,所有的输出信息不在发送给浏览器,保存在缓冲区

readfile($url);//将文件写入到缓冲区

$file_data = ob_get_contents();//获取缓冲区文件内容,内容为二进制

$filename = "./".$filePath.time().$ext_name;//构建保存文件位置

ob_end_clean();//清空缓冲区

$local_file = fopen($filename,'a');//打开文件

$fwrite($local_file,$file_data);//将内容写入文件

fclose($local_file);//关闭文件

}

通过这个函数,我们就可以轻松实现文件的下载,而且我们可以循环调用来实现批量下载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值