我有这样的代码
function download(){
$id = $this->uri->segment(3);
$dat = $this->mikland->gidiklanfoto($id);
foreach ($dat as $item){
$name = $item->foto;
$data = file_get_contents(base_url()."/uploads/".$name); // filenya
force_download($name,$data);
}
redirect('cikland/viewiklan/'.$id);
}
当函数运行时,重定向无法运行。, 有人可以帮忙吗? 我认为这是一件简单的事情,但我不知道诀窍。感谢之前
答案 0 :(得分:1)
在force_download()
的末尾有一个exit()
语句,因此强制下载后代码不会运行。
并且您尝试同时下载多个文件 - 使用某种类型的多部分mime类型,可能会或可能不会,但在给定的情况下不会,因为CI的force_download()
似乎没有支持。
另一种方法是创建一个临时存档文件,其中包含要下载的所有文件;请查看compression and archives上的官方文档。
如果您想要将重定向标头与文件一起发送,则必须这样做:
function download(){
// add this somewhere befor the download
header('Location: '.site_url('cikland/viewiklan/'.$id));
$id = $this->uri->segment(3);
$dat = $this->mikland->gidiklanfoto($id);
// only first item is downloaded
foreach ($dat as $item)
{
$name = $item->foto;
$data = file_get_contents(base_url()."/uploads/".$name); // filenya
force_download($name,$data);
}
}
但问题仍然是浏览器如何处理重定向和内容:很可能你只会获得重定向。
答案 1 :(得分:0)
您需要加载网址助手。
$this->load->helper('url');
后
redirect("cikland/viewiklan/$id", 'refresh');
或
redirect("cikland/viewiklan/$id", 'location', 301);
字体:http://ellislab.com/codeigniter%20/user-guide/helpers/url_helper.html
答案 2 :(得分:0)
redirect()
方法重定向到网址。您需要传递一个完整的URL(因为它使用header()函数,根据RFC1 for HTTP1.1需要一个完整的URL。
因此您需要像给定示例一样对完整网址进行硬编码 - redirect('http://www.yoursite.com/cikland/viewiklan/'.$id);