PHP读取excel中地址实现多文件下载
PHP文件下载有单文件和多文件之分,如果是单文件写个方法可以实现,但是如果想循环下载多个文件我试验是没有成功。先说单文件的下载,方法如下:
function downfile($fileurl) {
$filenameexplode=explode('/',$fileurl);
$fileRealName=$filenameexplode[count($filenameexplode)-];
$filename=$fileurl;
$file = fopen($filename, "rb");
Header( "Content-type: application/octet-stream ");
Header( "Accept-Ranges: bytes ");
Header( "Content-Disposition: attachment; filename= ".$fileRealName);
$contents = "";
while (!feof($file)) {
$contents .= fread($file, );
}
echo $contents;
fclose($file);
}
如果是多个文件,可以采用压缩下载的方式进行下载,以下代码是读取excel中文件地址并打包下载的源码:
set_time_limit();
ini_set("max_execution_time", );
ini_set("memory_limit", "1G");
require_once 'Excel/PHPExcel/IOFactory.php';
$filePath ='pdforimg.xlsx';
$fileType = PHPExcel_IOFactory::identify($filePath);
$objReader = PHPExcel_IOFactory::createReader($fileType);
$objPHPExcel = $objReader->load($filePath); //$sheet = $objPHPExcel->getSheet(); // 读取第一個工作表 $arr = $objPHPExcel->getActiveSheet()->toArray();
foreach($arr as $k=>$v){
if($k>=){
foreach($arr[] as $kk=>$vv){
$isnull=str_replace(' ','',$v[]);
if(!($isnull) || $isnull==" "){
break;
}
$data[$k-][$arr[][$kk]]=$v[$kk];
}
}
} $filename = 'tmp.zip'; $zip = new ZipArchive();
$zip->open($filename, ZipArchive::OVERWRITE); foreach ($data as $key=>$vo) {
if($key>= && $key<){
$filenameexplode=explode('/',$vo['url']);
$fileRealName=$filenameexplode[count($filenameexplode)-];
$fileData = file_get_contents($vo['url']);
if ($fileData) {
$zip->addFromString($fileRealName, $fileData);
}
} } $zip->close(); $file = fopen($filename, "r");
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: " . filesize($filename));
Header("Content-Disposition: attachment; filename=pdf.zip");
//一次只传输1024个字节的数据给客户端
$buffer = ; //
while (!feof($file)) {
//将文件读入内存
$file_data = fread($file, $buffer);
//每次向客户端回送1024个字节的数据
echo $file_data;
}
fclose($file);
unlink($filename);
excel内容如下图所示:
打包过程参考:https://www.cnblogs.com/shaoyikai/p/3755079.html
PHP读取excel中地址实现多文件下载的更多相关文章
- sql 读取excel中的数据
select 列名 as 字段名 from openBowSet('MSDASQL.1','driver=Microsoft Excel Driver(*.xls);dbq=文件存放地址','sele ...
- Open Xml 读取Excel中的图片
在我的一个项目中,需要分析客户提供的Excel, 读出其中的图片信息(显示在Excel的第几行,第几列,以及图片本身). 网络上有许多使用Open Xml插入图片到Word,Excel的文章, 但 ...
- java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)
使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...
- Python读取excel中的图片
作为Java程序员,Java自然是最主要的编程语言.但是Java适合完成大型项目,对于平时工作中小的工作任务,需要快速完成,易于修改和调试,使用Java显得很繁琐,需要进行类的设计,打成jar包,出现 ...
- 使用OPEN XML SDK 读取EXCEL中的超链接Hyperlink
使用OPEN XML SDK 读取EXCEL中的超链接Hyperlink 原理 先创建一个包括全部EXCEL单元格中超链接Hyperlink数据的表,再定位单元格通过列头(如A1,B1)获取超链接信息 ...
- java中使用jxl读取excel中的数据
package bboss; import java.io.File; import java.io.FileInputStream; import java.io.IOException; impo ...
- python读取excel中单元格的内容返回的5种类型
(1) 读取单个sheetname的内容. 此部分转自:https://www.cnblogs.com/xxiong1031/p/7069006.html python读取excel中单元格的内容返回 ...
- 从SQL查询分析器中读取EXCEL中的内容
很早以前就用sql查询分析器来操作过EXCEL文件了. 由于对于excel公式并不是很了解,所以很多时候处理excel中的内容,常常是用sql语句来处理的.[什么样的人有什么样的办法吧 :)] 今又要 ...
- SpringBoot(十三)_springboot上传Excel并读取excel中的数据
今天工作中,发现同事在整理数据,通过excel上传到数据库.所以现在写了篇利用springboot读取excel中的数据的demo.至于数据的进一步处理,大家肯定有不同的应用场景,自行修改 pom文件 ...
随机推荐
- form表单参数传递和url参数传递的区别
template: form表单: <form action="" method='GET'> <div class="input-group" ...
- mouseenter和mouseover的区别
mouseover事件-不论鼠标指针穿过被选元素或其子元素,都会触发. mouseenter事件-只有在鼠标指针穿过被选元素时才会触发,对应事件为mouseleave. mouseout事件-不论鼠标 ...
- idea快速搭建springboot项目
Spring Boot是由Pivotal团队提供的全新框架,设计目的是用来简化新Spring应用的初始搭建以及开发过程.它主要推崇的是'消灭配置',实现零配置. 那么,如何在idea中创建一个spri ...
- 【剑指Offer学习】【面试题50:树中两个结点的最低公共祖先】
题目:求树中两个结点的最低公共祖先,此树不是二叉树,而且没有指向父节点的指针. 树的结点定义 private static class TreeNode { int val; List<Tree ...
- URI和URL差别以及相对路径和绝对路径的差别
一.URL和URI定义: 1.URL是全球资源定位符的英文所写,您平时上网时在IE浏览器中输入的那个地址就是URL.比方:网易 http://www.163.com就是一个URL. 2.URI是Web ...
- EventBus在Android中的简单使用
EventBus是一个方便与Android中各组件通信的开源框架,开源地址;https://github.com/greenrobot/EventBus.EventBus功能非常强大 ,今天在做一个功 ...
- [hdu 4869](14年多校I题)Turn the pokers 找规律+拓欧逆元
Turn the pokers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- linux下使用自带mail发送邮件(超简单)
linux 发邮件最简单的办法 ,也可以使用公司邮箱,需要安装mailx工具,mailx是一个小型的邮件发送程序. 具体步骤如下: 1.安装 [root@001 ~]# yum install mai ...
- 用LinkedList集合演示栈和队列的操作
在数据结构中,栈和队列是两种重要的线性数据结构.它们的主要不同在于:栈中存储的元素,是先进后出:队列中存储的元素是先进先出.我们接下来通过LinkedList集合来演示栈和队列的操作. import ...
- StringUtils工具类常用方法
前言:工作中看到项目组里的大牛写代码大量的用到了StringUtils工具类来做字符串的操作,便学习整理了一下,方便查阅. isEmpty(String str) 是否为空,空格字符为false is ...