Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 821
  • Last Modified:

Cross Browser CSV Download

Hello Experts!

I need your magnificent help with another problem I am having.  I have set up a site under SSL and am trying to create a dynamic CSV file generated from the contents of the database that can be downloaded when the user clicks on a link.

As of now, I have it set up so that the link redirects to a new PHP page whereupon I am sending the headers and accessing the database to create the CSV file.  This works fine in Firefox, Chrome and Safari.  However in IE I get the following message:

Internet Explorer cannot download download/ from mysite.com.

Internet Explorer was not able to open this Internet site.  The requested site is either unavailable or cannot be found.  Please try again later.


I have tried various methods to get around this situation without success.  I would like to know if any of you experts have code that will work across all browser platforms to accomplish what I am trying to do.
0
OmniUnlimited
Asked:
OmniUnlimited
3 Solutions
 
woepwobinCommented:
Always helpful, those messages from IE.

Can you show the code that generates the link, and the code that sends the headers and data?
0
 
Lukasz ChmielewskiCommented:
What type of database ? MySQL ?
0
 
MattCommented:
Hi,

Take a look at this page: http://stackoverflow.com/questions/217424/create-a-csv-file-for-a-user-in-php/6493794#6493794

It may be helpful.

I am currently outputting CSV from one of my sites and I've checked and it works in Chrome, FF and IE but unfortunately I don't have the code to hand.  It's likely you may be missing a header or something which is causing IE to complain.  When I get home if you haven't found a solution yet I'll post the code for you.

Cheers
0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
MattCommented:
Hi,

Here's the code I'm using, I'll confess I don't fully understand the multiple use of the Content-Type header, but I can say it definitely works in IE 7, 8 and 9.

	header("Pragma: public");
	header("Expires: 0");
	header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
	header("Content-Type: application/force-download");
	header("Content-Type: application/octet-stream");
	header("Content-Type: application/download");;
	header("Content-Disposition: attachment; filename=file_name_here.csv ");
	header("Content-Transfer-Encoding: binary ");
	
	echo $data;
	
	exit();

Open in new window


The $data variable  is a string variable containing the comma separated data.

Hope that helps,

Cheers

Matt
0
 
woepwobinCommented:
I cannot reproduce the problem.

This is what I usually use:

header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Cache-Control: no-cache, must-revalidate, maxage=1');
header('Cache-Control: maxage=1');
header('Pragma: public');
header('Expires: Fri, 15 Aug 2003 15:00:00 GMT+1'); /* Remember my wedding day :) */
header('Content-Type: application/octet-stream');
header('Content-Length: '.strlen($data));
echo $data;

Open in new window


The only big difference I see with your code is the 'Content-Length' header.
0
 
OmniUnlimitedAuthor Commented:
MattJellings, thank you for taking time and really analyzing my situation for me.  I as well am puzzled by the need for so many headers, but the important thing is that it works!

Thanks to all the experts who participated.
0
 
MattCommented:
Hi,

You're welcome, glad to hear you managed to get it working.

Cheers

Matt
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now