[php] Datei zum downloaden Anbieten, nicht phpBB
[php] Datei zum downloaden Anbieten, nicht phpBB
Hi!
ich brauch für meine hp, also nichts mit download mod oder so eine php-funktion mit der ich eine jpg-datei DOWNLOADEN lasse und nicht wie standartgemäß in 90% der browser anzeigen (also wenn ich *****.jpg aufrufe soll das downloadfenster kommen und nicht das angezeigte bild!)
kann mir da jemand helfen?
es geht halt um eine gallery!
gruß!
asmodiel
Ps.: suchfunktion hab ich hier, auf php.net, google und selfphp.de benutzt! o.O
ich brauch für meine hp, also nichts mit download mod oder so eine php-funktion mit der ich eine jpg-datei DOWNLOADEN lasse und nicht wie standartgemäß in 90% der browser anzeigen (also wenn ich *****.jpg aufrufe soll das downloadfenster kommen und nicht das angezeigte bild!)
kann mir da jemand helfen?
es geht halt um eine gallery!
gruß!
asmodiel
Ps.: suchfunktion hab ich hier, auf php.net, google und selfphp.de benutzt! o.O
Schönen gruß, Asmodiel
Linus Thorvals hat geschrieben:Intelligence is the ability to avoid doing work, yet getting the work done.
- S2B
- Ehemaliges Teammitglied
- Beiträge: 3258
- Registriert: 10.08.2004 22:48
- Wohnort: Aachen
- Kontaktdaten:
Versuch mal sowas:
Code: Alles auswählen
header('Content-type: application/octet-stream');
header('Content-disposition: attachment; filename=<Dateiname>');
header('Content-Length: <Dateigröße>');
readfile('<Pfad zur Datei>');
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
achso... und die dateigröße und so muss dabei sein?
naja... ich glaube, dass die einfachste version wäre, das in ne zip zu packen und gut iss
naja... ich glaube, dass die einfachste version wäre, das in ne zip zu packen und gut iss

Schönen gruß, Asmodiel
Linus Thorvals hat geschrieben:Intelligence is the ability to avoid doing work, yet getting the work done.
- Olli Oberhausen
- Mitglied
- Beiträge: 561
- Registriert: 22.10.2004 01:03
- Wohnort: Oberhausen NRW
- Kontaktdaten:
IE und Opera brauchen jedoch application/octetstream - sonst klappts nicht in den Browsern...
Hat sich wohl jemand beim programmieren der Browser verschrieben
Gruß, Olli
Hat sich wohl jemand beim programmieren der Browser verschrieben

Gruß, Olli
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
danke euch beiden erstmal, aber wie soll ich das dann machen, dass ie opera und firefox das machen?
beide schnipsel nehmen?
beide schnipsel nehmen?
Schönen gruß, Asmodiel
Linus Thorvals hat geschrieben:Intelligence is the ability to avoid doing work, yet getting the work done.
Die Funktion habe ich mir zusammengesucht:
Bisher habe ich damit keine Probleme festgestellt.
Code: Alles auswählen
function makeDownload($file, $dir, $type) {
$file_kurz = $file;
$dirfile = $dir.$file;
// Dateityp, der immer abgespeichert wird
header("Content-Type: application/octetstream");
// Dateiname mit Sonderbehandlung des IE 5.5
header("Content-Disposition: ".(!strpos($HTTP_USER_AGENT,"MSIE 5.5")?"attachment; ":"")."filename=$file_kurz");
// Im Grunde ueberfluessig, hat sich anscheinend bewährt
header("Content-Transfer-Encoding: binary");
// Zwischenspeichern auf Proxies verhindern
header("Cache-Control: post-check=0, pre-check=0");
// Dateigröße für Downloadzeit-Berechnung
header("Content-Length: ".filesize($dirfile));
readfile($dirfile);
}
- Olli Oberhausen
- Mitglied
- Beiträge: 561
- Registriert: 22.10.2004 01:03
- Wohnort: Oberhausen NRW
- Kontaktdaten:
Und ich das ganze auch noch mal
Man sollte hier mal einen Tag einbauen "Antwort ist in Arbeit ;o)"
Olli

Code: Alles auswählen
<?php
function send_file($attachment, $upload_dir)
{
global $_SERVER, $HTTP_USER_AGENT, $HTTP_SERVER_VARS, $lang, $db, $attach_config;
$filename = ($upload_dir == '') ? $attachment : $upload_dir . '/' . $attachment;
if (@!file_exists(@realpath($filename)))
{
die('Datei nicht gefunden: ' . $filename);
}
if (!empty($_SERVER['HTTP_USER_AGENT']))
{
$HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
}
else if (!empty($HTTP_SERVER_VARS['HTTP_USER_AGENT']))
{
$HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
}
else if (!isset($HTTP_USER_AGENT))
{
$HTTP_USER_AGENT = '';
}
if (ereg('Opera(/| )([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version))
{
$browser_version = $log_version[2];
$browser_agent = 'opera';
}
else if (ereg('MSIE ([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version))
{
$browser_version = $log_version[1];
$browser_agent = 'ie';
}
else if (ereg('OmniWeb/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version))
{
$browser_version = $log_version[1];
$browser_agent = 'omniweb';
}
else if (ereg('Netscape([0-9]{1})', $HTTP_USER_AGENT, $log_version))
{
$browser_version = $log_version[1];
$browser_agent = 'netscape';
}
else if (ereg('Mozilla/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version))
{
$browser_version = $log_version[1];
$browser_agent = 'mozilla';
}
else if (ereg('Konqueror/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version))
{
$browser_version = $log_version[1];
$browser_agent = 'konqueror';
}
else
{
$browser_version = 0;
$browser_agent = 'other';
}
$mimetype = ($browser_agent == 'ie' || $browser_agent == 'opera') ? 'application/octetstream' : 'application/octet-stream';
header('Pragma: public');
// Send out the Headers
header('Content-Type: ' . $mimetype . '; name="' . $filename . '"');
header('Content-Disposition: attachment; filename="'.$filename.'"');
//
// Now send the File Contents to the Browser
//
$size = @filesize($filename);
if ($size)
{
header("Content-length: $size");
}
readfile($filename);
exit;
}
send_file('help1.gif', 'images');
?>
Olli
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
ich hab mal die kürzere version genommen und...
naja, ein bisschen verändert halt, header und footer included und titel dazugegeben...
o.O also als ich die testdatei "KF_girl_1.jpg" downloaden wollte und das noch nicht verändert hatte wurde alles normal gedownloaded.
NUR nachdem ich das getan hab kommt jetzt das hier: o.O
was ist da los?!
naja, ein bisschen verändert halt, header und footer included und titel dazugegeben...
Code: Alles auswählen
<?php
$root_path = "./";
$page_title = "Download";
include($root_path.'includes/header.php');
$file = $_GET['file'];
$dir = "uploads/";
function makeDownload($file, $dir) {
$file_kurz = $file;
$dirfile = $dir.$file;
// Dateityp, der immer abgespeichert wird
header("Content-Type: application/octetstream");
// Dateiname mit Sonderbehandlung des IE 5.5
header("Content-Disposition: ".(!strpos($HTTP_USER_AGENT,"MSIE 5.5")?"attachment; ":"")."filename=$file_kurz");
// Im Grunde ueberfluessig, hat sich anscheinend bewährt
header("Content-Transfer-Encoding: binary");
// Zwischenspeichern auf Proxies verhindern
header("Cache-Control: post-check=0, pre-check=0");
// Dateigröße für Downloadzeit-Berechnung
header("Content-Length: ".filesize($dirfile));
readfile($dirfile);
}
makeDownload($file, $dir);
include ( $root_path.'includes/footer.php');
?>
NUR nachdem ich das getan hab kommt jetzt das hier:
Code: Alles auswählen
Warning: Cannot modify header information - headers already sent by (output started at /var/www/user/as/asmodiel/html/uploader/includes/header.php:6) in /var/www/user/as/asmodiel/html/uploader/download.php on line 16
Warning: Cannot modify header information - headers already sent by (output started at /var/www/user/as/asmodiel/html/uploader/includes/header.php:6) in /var/www/user/as/asmodiel/html/uploader/download.php on line 19
Warning: Cannot modify header information - headers already sent by (output started at /var/www/user/as/asmodiel/html/uploader/includes/header.php:6) in /var/www/user/as/asmodiel/html/uploader/download.php on line 22
Warning: Cannot modify header information - headers already sent by (output started at /var/www/user/as/asmodiel/html/uploader/includes/header.php:6) in /var/www/user/as/asmodiel/html/uploader/download.php on line 25
Warning: Cannot modify header information - headers already sent by (output started at /var/www/user/as/asmodiel/html/uploader/includes/header.php:6) in /var/www/user/as/asmodiel/html/uploader/download.php on line 28
$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ
und hier halt noch viele andere komische zeichen, die anscheinend vom jpg kommen, wenn man das mit dem texteditor öffnet o.O
was ist da los?!
Schönen gruß, Asmodiel
Linus Thorvals hat geschrieben:Intelligence is the ability to avoid doing work, yet getting the work done.
- Olli Oberhausen
- Mitglied
- Beiträge: 561
- Registriert: 22.10.2004 01:03
- Wohnort: Oberhausen NRW
- Kontaktdaten:
Du darfst keinen header includieren... Du willst doch eine Dtei senden und keine html seite ....
Olli
Olli
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
Die Funktion gibt nichts weiter als die Datei aus, sie muß über einen Link oder ein Formular angesprochen werden. Außerdem muß man noch etwas für die Sicherheit tun.Asmodiel hat geschrieben:naja, ein bisschen verändert halt, header und footer included und titel dazugegeben...
z.B.
Code: Alles auswählen
if(file_exists ($dir.$_GET['v'])) {...