467,227 Members | 1,432 Online
Bytes | Developer Community
Ask Question

Home New Posts Topics Members FAQ

Post your question to a community of 467,227 developers. It's quick & easy.

Force download WITHOUT readfile?

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
  • viewed: 4728
Share:
2 Replies
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
> > 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.

Similar topics

5 posts views Thread by peetm | last post: by
11 posts views Thread by Jim Willsher | last post: by
4 posts views Thread by Kevin Muenzler, WB5RUE | last post: by
4 posts views Thread by C16 | last post: by
2 posts views Thread by comp.lang.php | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.