Willkommen in der Webstatt Zum Webstatt Blog und Stories
fish fish am 06.12.06 23:13

hi ma ne frage: wie mache ich ein mp3-datei downloadbar?
also falls der user eingestellt hat, dass die datei automatisch abgespielt wird, dass die datei trotzdem nur heruntergeladen werden kann... geht das irgentwie? (auch mit andere dateien (pdf, html, zip ect)?

netcup.de Warum gibt es hier Werbung?
Christian am 07.12.06 13:16

OT:

irgendwo habe ich gelesen, dass man es dem user überlassen soll, was er mit der datei anfangen will, also ob sie geöffnet wird, oder ob er sie mit rechtsclick -> speichern unter downloaden will
is genau das selbe wie mit target="_blank", soll man ja scheinbar auch ned benutzen

fish fish am 07.12.06 13:21

wenn ich einen eine PLAY teste und eine DOWNLOAD taste habe, dann will ich dass der die datei dann auch runterlädt und keine mätzchen macht

BNightSpeeder am 07.12.06 17:47

Ich schätze ma das geht nur über einen header aufruf:

<?
$filename = "sound.mp3"; // Download datei
$filesrename = "was.mp3"; //Umbennen in

header("Content-Type: x-type/subtype");
header("Content-Length: ".filesize($filename));
header("Content-Disposition: attachment; filename=".$filesrename);
readfile($filename);
?>

Franky Franky am 07.12.06 17:53

eigentlich so:

if(isset($_GET['download']) && is_numeric($_GET['download'])){
$dlid = intval($_GET['download']);
list($candl) = mysql_fetch_array(mysql_query('SELECT COUNT(id) FROM user2dateien WHERE id='.$dlid.' && userid='.$userid.' && isordner=0'));
if($candl != 1) accesserror();
list($name, $uo, $size) = mysql_fetch_array(mysql_query('SELECT name,unterordner,size FROM user2dateien WHERE id='.$dlid));

if(preg_match('/MSIE [0-9]\.[0-9]/', $_SERVER['HTTP_USER_AGENT'])) $browser = 'ie';
elseif(preg_match('/Opera\/[0-9]\.[0-9]/', $_SERVER['HTTP_USER_AGENT'])) $browser = 'opera';

header('Content-Type: '.(($browser=='ie' || $browser=='opera')?'application/octetstream':'application/octet-stream'));
header('Content-disposition: '.(($browser=='ie')?'inline':'attachment').'; filename="'.$name.'"');
header('Content-Length: '.$size);
if($browser == 'ie') header('Pragma: public');
else header('Pragma: no-cache');
header('Expires: 0');
readfile('../dateien.h6p.de/'.$benutzername.getcurrdir($uo).$name);
exit;
}


aber deins müsst auch gehen =)

fish fish am 07.12.06 18:04

kann man da auch ne funktion draus machen?

BNightSpeeder am 07.12.06 18:13

hm, müsste eigentlich so gehen:

function load($file) {

$dlid = intval($file);
list($candl) = mysql_fetch_array(mysql_query('SELECT COUNT(id) FROM user2dateien WHERE id='.$dlid.' && userid='.$userid.' && isordner=0'));
if($candl != 1) accesserror();
list($name, $uo, $size) = mysql_fetch_array(mysql_query('SELECT name,unterordner,size FROM user2dateien WHERE id='.$dlid));

if(preg_match('/MSIE [0-9]\.[0-9]/', $_SERVER['HTTP_USER_AGENT'])) $browser = 'ie';
elseif(preg_match('/Opera\/[0-9]\.[0-9]/', $_SERVER['HTTP_USER_AGENT'])) $browser = 'opera';

header('Content-Type: '.(($browser=='ie' || $browser=='opera')?'application/octetstream':'application/octet-stream'));
header('Content-disposition: '.(($browser=='ie')?'inline':'attachment').'; filename="'.$name.'"');
header('Content-Length: '.$size);
if($browser == 'ie') header('Pragma: public');
else header('Pragma: no-cache');
header('Expires: 0');
readfile('../dateien.h6p.de/'.$benutzername.getcurrdir($uo).$name);
exit;

}

fish fish am 07.12.06 18:25

und wie geht das mit totalen adressen? also mit dten die auf andern servern und anderen urls rumlungern?

BNightSpeeder am 07.12.06 18:31

das geht nicht mit php sonst könntest du ja alle PHP datein und somit DB Passworts etc. runterladen.

fish fish am 07.12.06 18:35

hoppsala... interressant ^^

aber kann man wenigstens den ordner noch mit angeben?
danke schonmal!

BNightSpeeder am 07.12.06 18:42

den Ordner müsste man mit angeben können also relativ.

nuit nuit am 07.12.06 18:52

franky...wenn dus chon sowas postest...dann bitte rohgerüst...weil da sind auch noch deine Sql funktionen drin ;) und der Pfad wo er es herholen soll....

function load($file) {
if(preg_match('/MSIE [0-9]\.[0-9]/', $_SERVER['HTTP_USER_AGENT'])) $browser =
'ie';
elseif(preg_match('/Opera\/[0-9]\.[0-9]/', $_SERVER['HTTP_USER_AGENT'])) $brow
ser = 'opera';

header('Content-Type: '.(($browser=='ie' || $browser=='opera')?'application/oc
tetstream':'application/octet-stream'));
header('Content-disposition: '.(($browser=='ie')?'inline':'attachment').'; fil
ename="'.$name.'"');
header('Content-Length: '.filesize($file));
if($browser == 'ie') header('Pragma: public');
else header('Pragma: no-cache');
header('Expires: 0');
readfile($file);
exit;
}

/* -------- USAGE -------------- */
load('ordner/datei.mp3');

Snake am 07.12.06 19:12

wie wäre es mit ner .htaccess datei:

AddType application/octet-stream .mp3

fish fish am 07.12.06 19:23

mit hatccess kann ich dann daber die datei nimmer innen flashplayer bringen oder?

Snake am 07.12.06 19:27

dürfte dem flash player egal sein.
du änderst ja nur den mime type

Jonas Jonas am 07.12.06 22:45

Einfach so: ?!?

<?php
function download($file , $name) {
$size = filesize($file);
header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename=".$name);
header("Content-Length: ".$size);
header("Pragma: no-cache");
header("Expires: 0");
readfile($file);
}

// Download der Datei "an1-6.jpg" aus "./meinverzeichnis"
// als "giraffen.jpg"
download("meinverzeichnis/an1-6.jpg","giraffen.jpg");
?>

Snake am 08.12.06 13:59

warum denn den php parser mit so ner banalen aufgabe quälen?

BNightSpeeder am 08.12.06 14:04

alternative?

Snake am 08.12.06 14:29

hab ich oben geschriebe. vll auch statt addType ein setType

Franky Franky am 08.12.06 15:42

sry nuit... :D wollt ich ja eig nich... xD nur hatte kZ das rauszunehmen :P

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt