By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,117 Members | 2,178 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,117 IT Pros & Developers. It's quick & easy.

Force download WITHOUT readfile?

P: n/a
Is it possible to force a download without using the readfile
function?

My website setup consists of my server that serves the web pages plus
a high-speed file server elsewhere on the internet that servers my
files. I'm currently using header("Location: abc.com") to redirect my
users to this other site but can't force a download.

I can get it to work using readfile() but that means the file moves
from the high-speed server through my webserver and then to the user,
which I don't want.

Here's my current setup:

header("Content-Type:application/force-download;name=\"".$path_parts["basename"]."\"");
header("Content-Disposition:attachment;filename=\"".$path_parts["basename"]."\"");
header("Content-Length: $size");
header("Content-Transfer-Encoding: binary");
header("Location: ".$path["path"]."");

The above works just fine but doesn't force the download. Changing the
header("Location: ".$path["path"]."") to readfile($path["path"])
forces the download but now the file moves through my webserver and I
don't want that.

Thanks

--Matt
Jul 17 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
In article <1e**************************@posting.google.com >, Matthew Sims wrote:
Is it possible to force a download without using the readfile
function?
You tell me, is there another way than a UserAgent that downloads file(s)?
My website setup consists of my server that serves the web pages plus
a high-speed file server elsewhere on the internet that servers my
files. I'm currently using header("Location: abc.com") to redirect my
users to this other site but can't force a download.
Oh, your going to play with the Content-type... This has been discussed
many times before in this group. So i'm pretty sure you'll find out why
it's impossible by definition.
I can get it to work using readfile() but that means the file moves
from the high-speed server through my webserver and then to the user,
which I don't want.

Here's my current setup:

header("Content-Type:application/force-download;name=\"".$path_parts["basename"]."\"");
header("Content-Disposition:attachment;filename=\"".$path_parts["basename"]."\"");
header("Content-Length: $size");
header("Content-Transfer-Encoding: binary");
header("Location: ".$path["path"]."");


On the first site, you redirect them, not directly to the file, but to a
download.php on the second server.

On the second server you place your download.php that outputs the
headers and the readfile...
--
Tim Van Wassenhove <http://home.mysth.be/~timvw/contact.php>
Jul 17 '05 #2

P: n/a
> > My website setup consists of my server that serves the web pages plus
a high-speed file server elsewhere on the internet that servers my
files. I'm currently using header("Location: abc.com") to redirect my
users to this other site but can't force a download.
Oh, your going to play with the Content-type... This has been discussed
many times before in this group. So i'm pretty sure you'll find out why
it's impossible by definition.


I did scour the entire group and though everyone's answer was to use
readfile, no one specifically said that there is no other way. So I
guess this post is basically the "there's no other way" post.
I can get it to work using readfile() but that means the file moves
from the high-speed server through my webserver and then to the user,
which I don't want.

Here's my current setup:

header("Content-Type:application/force-download;name=\"".$path_parts["basename"]."\"");
header("Content-Disposition:attachment;filename=\"".$path_parts["basename"]."\"");
header("Content-Length: $size");
header("Content-Transfer-Encoding: binary");
header("Location: ".$path["path"]."");


On the first site, you redirect them, not directly to the file, but to a
download.php on the second server.

On the second server you place your download.php that outputs the
headers and the readfile...


Yeah, that's pretty much what I thought. Unfortunately, the second
server is commercially owned which means I have little input
configuration-wise. So I guess I'm stuck with a redirect.

Thanks anyway

--Matt
Jul 17 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.