Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >下载foreach循环问题中的多个文件

下载foreach循环问题中的多个文件
EN

Stack Overflow用户
提问于 2016-04-27 01:30:37
回答 3查看 2.4K关注 0票数 3

我有以下代码可以通过代码下载一些日志文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$files = array( '../tmp/logs/debug.log',
                '../tmp/logs/error.log');
    foreach($files as $file) {
        header("Cache-Control: public");
        header("Content-Description: File Transfer");
        header("Content-Disposition: attachment; filename=$file");
        header("Content-Type: text/html");
        header("Content-Transfer-Encoding: binary");
        // read the file from disk
        readfile($file);
    }

但是只下载数组的第一个元素。在本例中,debug.log,如果我交换元素,那么只有error.log。有什么帮助吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-27 01:51:19

每个HTTP请求只能下载一个文件。实际上,一旦发送了第一个文件,浏览器就会假设这是处理的结束,并停止与服务器的对话。

如果您想确保用户下载多个文件,一种解决方案可能是在服务器端快速将它们全部压缩,然后将zip文件发送给用户下载。

票数 3
EN

Stack Overflow用户

发布于 2016-04-27 02:15:46

不能一次下载多个文件。HTTP协议设计为每个请求发送一个文件。

或者,您可以压缩所有日志文件并将其作为zip文件下载。

您可以使用ZipArchive类创建一个ZIP文件并将其流到客户端。类似于:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    $files = array(
           '../tmp/logs/debug.log',
           '../tmp/logs/error.log'
    );
    $zipname = 'logs.zip';
    $zip = new ZipArchive;
    $zip->open($zipname, ZipArchive::CREATE);
    foreach ($files as $file) {
      $zip->addFile($file);
    }
    $zip->close();

并使之流淌:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
票数 3
EN

Stack Overflow用户

发布于 2016-04-27 01:45:23

标头在相同的执行中设置一次。如果放入一个循环,下一个标头将不会发送。您可以使用javascript进行循环并使用ajax进行调用,但是用户将同时获得多个下载,因此它可以使浏览器崩溃和可用性崩溃。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36885750

复制
相关文章
java退出foreach循环_forEach方法如何跳出循环[通俗易懂]
3.1 foreach()不能使用break和continue这两个关键字,foreach和普通的for循环是不同的,它不是普通的遍历,实现continue的效果可以直接使用return。
全栈程序员站长
2022/09/01
15K0
增强For循环(foreach)
(1)只能顺序遍历所有元素,无法实现较为复杂的循环,如在某些条件下需要后退到之前遍历过的某个元素,不能完成
星哥玩云
2022/09/14
2.2K0
cssjshtml js 循环forEach
 js 循环forEach const names=new Array() resp.series.forEach(function (item,index) { names.push(item['name']) })
葫芦
2019/04/17
6.3K0
for和foreach循环语句
今天我们来讲解一下 for跟foreach 一、for 是一个循环语句 for break continue 从 i=0开始,到i=10结束,每次循环 for (i = 1; i <= 10; echo $i; } for (i = 10; i >0; echo $i; } //for可以嵌套 for (i = 1; i <= 10; for (j = 1; j <= 10; continue; echo i.j; } if($i==5) bre
老雷PHP全栈开发
2020/07/02
2.9K0
Java中的增强 for 循环 foreach
  foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理。能够提高性能,并减少代码出错的几率。在
IT可乐
2018/01/04
3.1K0
Java中的增强 for 循环   foreach
变相跳出forEach循环
众所周知,forEach循环是无法中途跳出循环的,有点同学说不是可以通过抛出错误跳出循环吗?是的。抛出异常是广为流传的一种方法,结果是我们想要,但是你看代码,哪个正常人会这样写代码?是非forEach不用吗?还是其他的循环关键字不配呢。
骤雨重山
2023/08/13
1900
变相跳出forEach循环
perl的foreach循环的坑
最近在写perl脚本的时候用foreach遍历hash的时候,出现遇到了一个问题,就是说当hash为一层的时候,并不会有问题,但是当hash类型结构比较复杂的时候,就会有需要注意的地方了。
纪莫
2019/03/14
1.3K0
MyBatis xml foreach循环语句
collection指定集合的上下文参数名称比如这里的@Param("list") item指定遍历的每一个数据的变量,一般叫it,可以使用it.userName来获取具体的值 index集合的索引值,从0开始 separator遍历每条记录并添加分隔符 除了批量插入,使用SQL in查询多个用户时也会使用:
FHAdmin
2021/09/14
2.3K0
forEach循环实现卡片列表
jsp页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html lang="en"> <head> <% String path = request.getRequestURI(); Strin
王小婷
2019/05/06
4.3K0
forEach循环实现卡片列表
C# foreach循环较for循环的优势与劣势
一、foreach循环的优势 C#支持foreach关键字,foreach在处理集合和数组相对于for存在以下几个优势: 1、foreach语句简洁 2、效率比for要高(C#是强类型检查,for循环对于数组访问的时候,要对索引的有效值进行检查) 3、不用关心数组的起始索引是几(因为有很多开发者是从其他语言转到C#的,有些语言的起始索引可能是1或者是0) 4、处理多维数组(不包括锯齿数组)更加的方便,代码如下: int[,] nVisited ={ {1,2,3}, {4,5,6
郑小超.
2018/01/26
2.6K0
Parallel.For循环 和 Parallel.ForEach循环
但是,有的时候又不是这样。如果迭代之间彼此独立,并且程序运行在多核处理器的机器上,如果能将不同的迭代放在不同的处理器上并行处理的话,将会受益匪浅。Parallel.For 和 Parallel.ForEach结构就是这样做的。
全栈程序员站长
2022/09/09
2.7K0
Parallel.For循环 和 Parallel.ForEach循环
Java 中for循环和foreach循环哪个更快?
在Java编程中,循环结构是程序员常用的控制流程,而for循环和foreach循环是其中比较常见的两种形式。关于它们哪一个更快的讨论一直存在。本文旨在探究Java中的for循环和foreach循环的性能差异,并帮助读者更好地选择适合自身需求的循环方式。通过详细比较它们的遍历效率、数据结构适用性和编译器优化等因素,我们将为大家揭示它们的差异和适用场景,以便您能够做出更明智的编程决策。
葡萄城控件
2023/10/16
6300
Java 中for循环和foreach循环哪个更快?
c# 中for和foreach循环的区别
    (2)效率比for要高(C#是强类型检查,for循环对于数组访问的时候,要对索引的有效值进行检查)
vv彭
2020/10/27
4.9K0
c# 中for和foreach循环的区别
下载网络直播,多个ts文件下载与合并
进入录播回放的页面,右键审查元素,选择network,可以知晓目前的文件活动情况。首先出来的是第一个ts文件,如图所示:472.ts,这个是第一个文件。把进度条拉动到最后面,会下载最后一个文件,如1850.ts。
全栈程序员站长
2022/09/09
2.9K0
js 的forEach 如何跳出循环「建议收藏」
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。对于空数组不会执行回调函数
全栈程序员站长
2022/09/05
6.4K0
JavaScript中如何中断forEach循环
arr.forEach(callback[, thisArg]),callback会接收到三个参数:currentValue、index、array
meteoric
2018/11/20
2.7K0
js 中 forEach 如何跳出循环?
// 1.for方法跳出循环 function getItemByIdFor(arr, id) { var item = null; for (var i = 0; i < arr.length; i++) { console.log("for循环 i", i); if (arr[i].id == id) { item = arr[i]; break; } } return ite
蓓蕾心晴
2022/11/22
8.4K0
lamda中stream的forEach与for循环对比
循环大概在50000大小的时候for循环就开始慢慢运行时间大于forEach,在50000数据之前都是for循环优势。但是当我直接加到1000000大小时发现for循环的速度优势又回来了,又测试了500000发现依然是for循环优势。 所以大概率下,几万几万数据时forEach速度是领先的。小数据和极大数据下for循环领先,所以推荐使用for循环,一般业务中很少有几万数据去循环。
全栈程序员站长
2022/11/15
1.2K0
lamda中stream的forEach与for循环对比
foreach跳出本次/当前循环与终止循环方法_js 跳出for循环
forEach无法通过正常流程(如break)终止循环,但可通过抛出异常的方式实现终止循环
全栈程序员站长
2022/11/01
11.1K0
php foreach跳出本次/当前循环与终止循环方法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112380.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/08
2.4K0

相似问题

使用SSIS Foreach循环循环多个文件夹

15

php头文件循环下载多个文件

50

如何使用for循环下载多个文件

12

Python下载for循环中的多个文件

20

多个foreach循环语句

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文