批量下载文件php

时间:2019-09-04
本文章向大家介绍批量下载文件php,主要包括批量下载文件php使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

做了个照片墙,要提供批量下载照片的功能,如果你会文件下载,那批量也是小菜一碟,就是把文件打包压缩为 ?zip 文件再下载,而php的内置类ZipArchive()让你很容易实现。

首先,配置php.ini,找到zip模块,启用即可。

download.php


?? ?$idlist = $_POST['photo_id']; ? ? ? ? ? ??
//生成压缩文件
?? ?$filename= rand(100, 999).'.zip'; //最终生成的文件名
?? ?$zip=new ZipArchive();
?? ?if($zip->open($filename,ZIPARCHIVE::CREATE)!==TRUE){
?? ??? ?exit('无法打开文件,或者文件创建失败');
?? ?}
?? ?foreach($idlist as $val){
?? ??? ?if(file_exists($val.'.jpg')){
?? ??? ??? ?$zip->addFile($val.'.jpg');
?? ??? ?}
?? ?}
?? ?$zip->close();//关闭
?? ?if(!file_exists($filename)){
?? ??? ?exit('无法找到文件'); ? ? ? ? ? //即使创建,仍有可能失败
?? ?}?? ?
?? ?$dir = '/test/';
?? ?require '../ok.php';
?? ?download($filename);
?? ?unlink($filename,$dir); ? ? ? ? ? ? ? ? ? ? //删除压缩文件
?>


ok.php
//download 参数
// 1.文件名
// 2.所在根目录下的路径,形式 ? /xxx/xxx/
function download($file_name,$dir){
?? ?$file_name = iconv("UTF-8","gb2312",$file_name); ? ? ? ? ? ? ? //如果文件名包含中文,必须先转为GB2312编码
? ? ? ? $file_name = $_SERVER['DOCUMENT_ROOT'].$dir.$file_name; ? ? ? ?//绝对路径
?? ?$file_name = $dir.$file_name;
?? ?if(!file_exists($file_name)){ //检查文件是否存在
?? ??? ?echo "文件不存在".$file_name;
?? ??? ?return ;
?? ?}
?? ?$file_size = filesize($file_name);
?? ?$fp=fopen($file_name,'r'); //打开文件
?? ?//输入文件标签
?? ?header("Content-type: application/octet-stream");
?? ?header("Accept-Ranges: bytes");
?? ?header("Accept-Length: ".$file_size);
?? ?header("Content-Disposition: attachment; filename=".$file_name);
?? ?$buffer = 1024;
?? ?$file_count = 0;
?? ?while (!feof($fp) && $file_size - $file_count > 0){
?? ??? ?$file_data = ?fread($fp,$buffer);
?? ??? ?$file_count+=$buffer;
?? ??? ?echo $file_data;
?? ?}
?? ?fclose($fp);
}
?>

在此分享一款更为方便的下载控件,详细信息可以参考我写的这篇文章:http://blog.ncmem.com/wordpress/2019/08/28/net%e6%96%87%e4%bb%b6%e6%89%b9%e9%87%8f%e4%b8%8b%e8%bd%bd/

$flag 上一页 下一页