对不起,如果标题没有解释。让我试着进一步解释。
我的代码如下:
<?
//Grab the number in count.txt
$count = intval(file_get_contents('count.txt'));
//Move the number up one
file_put_contents('count.txt', ++$count);
$number = file_get_contents('count.txt');
//Force Download
header('Content-Disposition: attachment; filename=DataFiles'.$number.".csv");
header('Content-Type: application/octet-stream');
//The data
foreach($array as $info){
echo $info."\n";
}
?>
$ array是一个数组数组。
现在有时数据量可能超过5000,因此如果数据超过5000,则为每个回显的5000个数据创建另一个文件。 Ea:如果$ array中有20,000个数据,那么它将总共生成4个文件。
答案 0 :(得分:11)
答案 1 :(得分:5)
在这里,您可以下载多个文件... 这些技巧在同一页面中渲染了许多iframe。 每个帧都有不同的源,强制下载不同的文件
<?php
for($i = 0; $i<5; $i++){
echo '<iframe src="test_multiple_downfile.php?text='.$i.'">/iframe>';
}
?>
test_multiple_downfile.php内容是这样的:
$out = $_GET['text'];
header("Content-Type: plain/text");
header("Content-Disposition: Attachment; filename=testfile_".$out.".txt");
header("Pragma: no-cache");
echo "$out";
答案 2 :(得分:4)
我使用AJAX和jQuery来做到这一点, 一种方法是准备所有文件并将它们放入每个文件都有唯一ID的会话中。 返回ajax调用是调用带有ID列表的JavaScript。
JavaScript必须创建尽可能多的隐藏IFrame并且您有ID,并且在每个ID中都调用PHP来下载部件。这就是你下载标题的地方。完成字节转储后,将其从会话中删除。使用唯一ID并在下载后删除它们确保没有人下载两次相同的文件。
ti的好处在于,如果刷新页面,因为IFrame是动态的,他们不会尝试下载另一个时间。如果出现错误,用户将看不到它们,因为它们是隐藏的IFrame。
因此,如果下载有问题,您可以发送JavaScript警报或调用top.FunctionName('message');而不是发送下载标题。向用户发送某种警报。
我最多可以同时下载10次。但用户也会提示10次。如果你不想拉链,你必须考虑这一点。
希望它有所帮助。
答案 3 :(得分:1)
不,这是不可能的,因为 HTTP协议旨在为每个请求发送一个文件。