PDA

View Full Version : Answer: How to force a file download


Flash Gordon
11-23-2005, 03:41 AM
Word Document:
$filename = "secure/writeToFile.doc";

header("Content-Length: " . filesize($filename));
header('Content-Type: application/msword');
header('Content-Disposition: attachment; filename=writeToFile.doc');

readfile($filename);
MPG / MPEG:
header("Content-Length: " . filesize($filename));
header('Content-Type: video/mpg');
header('Content-Disposition: attachment; filename=test2.mpg');

Others just change the Content-Type:
"pdf": "application/pdf"
"exe": "application/octet-stream"
"zip": "application/zip"
"xls": "application/vnd.ms-excel"
"ppt": "application/vnd.ms-powerpoint"
"gif": "image/gif"
"png": "image/png"
"jpg": "image/jpg"
"mp3": "audio/mpeg"
"mp3": "audio/mp3"
"wav": "audio/x-wav"
"mpe": "video/mpeg"
"mov": "video/quicktime"
"avi": "video/x-msvideo"

ENJOY!

*Note:* Just like all web aspects, Internet Explorer has some issues. If if doesn't not want to play with IE, download the file first and then play it locally. This fixes most issues.

**Side note** Notice in my example, all of my files reside in directory "secure." This directory has the mod permissions of 700 (User r/w/e | Group "none" | Other "none" ). This is how you can secure or make people login into to view or download you files.

EDIT: more mime-types;

application/andrew-inset ez
application/mac-binhex40 hqx
application/mac-compactpro cpt
application/mathml+xml mathml
application/msword doc
application/octet-stream bin dms lha lzh exe class so dll dmg
application/oda oda
application/ogg ogg
application/pdf pdf
application/postscript ai eps ps
application/rdf+xml rdf
application/smil smi smil
application/srgs gram
application/srgs+xml grxml
application/vnd.mif mif
application/vnd.mozilla.xul+xml xul
application/vnd.ms-excel xls
application/vnd.ms-powerpoint ppt
application/vnd.wap.wbxml wbxml
application/vnd.wap.wmlc .wmlc wmlc
application/vnd.wap.wmlscriptc .wmlsc wmlsc
application/voicexml+xml vxml
application/x-bcpio bcpio
application/x-cdlink vcd
application/x-chess-pgn pgn
application/x-cpio cpio
application/x-csh csh
application/x-director dcr dir dxr
application/x-dvi dvi
application/x-futuresplash spl
application/x-gtar gtar
application/x-hdf hdf
application/x-httpd-php .php .php4 .php3 .phtml
application/x-httpd-php-source .phps
application/x-javascript js
application/x-koan skp skd skt skm
application/x-latex latex
application/x-netcdf nc cdf
application/x-pkcs7-crl .crl
application/x-sh sh
application/x-shar shar
application/x-shockwave-flash swf
application/x-stuffit sit
application/x-sv4cpio sv4cpio
application/x-sv4crc sv4crc
application/x-tar .tgz tar
application/x-tcl tcl
application/x-tex tex
application/x-texinfo texinfo texi
application/x-troff t tr roff
application/x-troff-man man
application/x-troff-me me
application/x-troff-ms ms
application/x-ustar ustar
application/x-wais-source src
application/x-x509-ca-cert .crt
application/xhtml+xml xhtml xht
application/xml xml xsl
application/xml-dtd dtd
application/xslt+xml xslt
application/zip zip
audio/basic au snd
audio/midi mid midi kar
audio/mpeg mpga mp2 mp3
audio/x-aiff aif aiff aifc
audio/x-mpegurl m3u
audio/x-pn-realaudio ram rm
audio/x-pn-realaudio-plugin rpm
audio/x-realaudio ra
audio/x-wav wav
chemical/x-pdb pdb
chemical/x-xyz xyz
image/bmp bmp
image/cgm cgm
image/gif gif
image/ief ief
image/jpeg jpeg jpg jpe
image/png png
image/svg+xml svg
image/tiff tiff tif
image/vnd.djvu djvu djv
image/vnd.wap.wbmp .wbmp wbmp
image/x-cmu-raster ras
image/x-icon ico
image/x-portable-anymap pnm
image/x-portable-bitmap pbm
image/x-portable-graymap pgm
image/x-portable-pixmap ppm
image/x-rgb rgb
image/x-xbitmap xbm
image/x-xpixmap xpm
image/x-xwindowdump xwd
model/iges igs iges
model/mesh msh mesh silo
model/vrml wrl vrml
text/calendar ics ifb
text/css css
text/html .shtml html htm
text/plain asc txt
text/richtext rtx
text/rtf rtf
text/sgml sgml sgm
text/tab-separated-values tsv
text/vnd.wap.wml .wml wml
text/vnd.wap.wmlscript .wmls wmls
text/x-setext etx
video/mpeg mpeg mpg mpe
video/quicktime qt mov
video/vnd.mpegurl mxu m4u
video/x-msvideo avi
video/x-sgi-movie movie
x-conference/x-cooltalk ice

Flash Gordon
11-23-2005, 09:41 PM
Additionally,

If you need to find the correct headers for other documents type, email yourself the particular document. Then notice (in Yahoo for instance) what it displays as the header. This way you can get any headers you need.

eltripaseca
11-02-2006, 06:58 PM
Hey man, I used this script but I got a mistake in Explorer, everything works fine and you can download the files, but when you return to the .swf file everything is messed up, the screen appears white as if the connection failed or something. I really donīt understand php, so is there any way to fix this problem for Explorer ?

Thanks

MichaelxxOA
11-02-2006, 07:03 PM
I've never had any issues with just sending the header as application/octet-stream, if all you're trying to achieve is forced download. I don't know how that effects the auto opening of a file though.

Thanks FG :) Good info to have lying around.

Michael

Flash Gordon
11-02-2006, 08:41 PM
I haven't experienced any issues either, but I'm not a phpreak (http://www.phpfreaks.com/). If you have some serious php issues I'd suggest going there. That is what they do...posting php question here is like posting your actionscript at an html forum....

The above was just ment for me to force a download box for a user without having to zip up files. I though I'd post the headers (a year ago) because it took me a while to find them.

MichaelxxOA
11-02-2006, 09:22 PM
:-P I rarely look at dates, I apologzie :-P.s

Flash Gordon
11-02-2006, 09:26 PM
:p

toli
02-23-2007, 12:22 AM
sorry for a stupid question, but where do i put this php file and what do i name it??
all i want to do is when a user clicks a button in flash it opens a new page with a jpg, but insead of displaying it i want it to force download

so the code i use is :

b0.onPress = function():Void {
getURL("http://xbrandfluids.com/picturesfor3dcan/energydrinktemplate.jpg", "_blank");
}

Ruben
02-23-2007, 07:59 AM
One option (the simplest probably) is that you'd use your php-file to use as an intermediary between the link and the actual file:$filename = $_GET['file'];

header("Content-Length: " . filesize($filename));
header('Content-Type: image/jpg');
header('Content-Disposition: attachment; filename=image.jpg');

readfile($filename);

Then you'd link to the file like this:getURL("download.php?file=picturesfor3dcan/energydrinktemplate.jpg");

..you might want to consider creating something in the php-script that checks if the file really does exist.

- Ruben

Flash Gordon
02-23-2007, 08:08 AM
..you might want to consider creating something in the php-script that checks if the file really does exist.

- Ruben

Yea....a strong might on that one. If not you open yourself up to attacks.


Btw, as of Flash 8, this method is rather old fashion.

Ruben
02-23-2007, 08:25 AM
..then what would you use instead?

- Ruben

Flash Gordon
02-23-2007, 04:38 PM
FileReference, right?

Ruben
02-23-2007, 05:50 PM
Oh, yeah, silly me..

:p - Ruben