问题
I have a form on this page http://www.obsia.com/products/thassos_wonder_brochure/ On hitting submit, I want it start downloading the file and also get redirected to thank you page. But I can only get it either download the file or redirect or load the thank for downloading page.
This is the function for checking the form and submiting:
function thassos_wonder_brochure()
{
$this->load->helper('form');
$this->load->helper('email');
$this->load->library('email');
$this->load->library('form_validation');
//form validation
$this->form_validation->set_rules('firstname', 'First Name', 'required|max_length[32]');
$this->form_validation->set_rules('lastname', 'Last Name', 'required|max_length[32]');
$this->form_validation->set_rules('companyemail', 'Company Email', 'required|max_length[100]|valid_email|unique');
$this->load->model('brochure_model');
if ($this->form_validation->run() == FALSE)
{
// redisplay user form and repopulate fields
$this->load->view('/tw/thassos_wonder_brochure_view');
}
//display confirmation web page and send email
else
{
if($query = $this->brochure_model->addContact())
{
redirect('/thankyou/thassos_wonder_download'); (UPDATE)
}
}
}
Below is the code is on the thank you page ending with redirect to the download page: (UPDATE)
<?php $this->load->view('header_view.php'); ?>
<div class="prod">
<?php $this->load->view('pmenu_view');?>
<div class="product_desc" id="tw_download">
<h1>Thank you for Downloading</h1>
<p>You have downloaded the brochure for ThassosWonder - for white stones specifically. You will also receive further information and link to the downloads in your email after you click on the confirmation link in your email.</p>
<?php echo br(1); ?>
<p>Feel free to write to us, if you are unable <?php echo anchor('contact', 'to get desired finish from your white marble or stones')?>. You can upload a picture to get a thorough analysis from our Research Director.</p>
<br />
</div>
</div>
<?php $this->load->view('footer_view');?>
<?php redirect('download/thassos_wonder_brochure'); ?>
This is the code I used on the download page. How can I download the file and also redirect it to thank you page.
<?php
$this->load->helper('download');
$name = 'ThassosWonder.pdf';
$data = file_get_contents("./downloads/brochures/Thassos_Wonder_Obsia.pdf"); // Read the file's contents - cannot use relative path. It will try to call the file from same directory (controller) as this file. In order for it get the contents from the root folder put a . in front of the relative path//
force_download($name, $data);
?>
Any help would be deeply appreciated.
回答1:
Do it the other way around - redirect to the 'thank you' page and immediately redirect to the 'force download' page. This will start the download but leave the user on the 'thank you' page.
UPDATE: Try changing
<?php redirect('download/thassos_wonder_brochure'); ?>
to
<?php redirect('download/thassos_wonder_brochure', 'refresh'); ?>
instead.
来源:https://stackoverflow.com/questions/6088188/codeigniter-download-file-and-redirect