问,如何无条件地使用重定向?

时间:2013-11-18 11:16:16

标签: codeigniter redirect codeigniter-2 response.redirect codeigniter-url

我有这样的代码

    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);
   }

当函数运行时,重定向无法运行。, 有人可以帮忙吗? 我认为这是一件简单的事情,但我不知道诀窍。感谢之前

3 个答案:

答案 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);