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)?
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
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
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);
?>
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 =)
kann man da auch ne funktion draus machen?
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;
}
und wie geht das mit totalen adressen? also mit dten die auf andern servern und anderen urls rumlungern?
das geht nicht mit php sonst könntest du ja alle PHP datein und somit DB Passworts etc. runterladen.
hoppsala... interressant ^^
aber kann man wenigstens den ordner noch mit angeben?
danke schonmal!
den Ordner müsste man mit angeben können also relativ.
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');
wie wäre es mit ner .htaccess datei:
AddType application/octet-stream .mp3
mit hatccess kann ich dann daber die datei nimmer innen flashplayer bringen oder?
dürfte dem flash player egal sein.
du änderst ja nur den mime type
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");
?>
warum denn den php parser mit so ner banalen aufgabe quälen?
alternative?
hab ich oben geschriebe. vll auch statt addType ein setType
sry xyz-161... :D wollt ich ja eig nich... xD nur hatte kZ das rauszunehmen :P