Willkommen in der Webstatt
User-1 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?
User-2 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

User-1 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

User-3 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);
?>

User-4 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 =)

User-1 am 07.12.06 18:04

kann man da auch ne funktion draus machen?

User-3 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;

}

User-1 am 07.12.06 18:25

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

User-3 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.

User-1 am 07.12.06 18:35

hoppsala... interressant ^^

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

User-3 am 07.12.06 18:42

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

User-5 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');

User-6 am 07.12.06 19:12

wie wäre es mit ner .htaccess datei:

AddType application/octet-stream .mp3

User-1 am 07.12.06 19:23

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

User-6 am 07.12.06 19:27

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

User-7 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");
?>

User-6 am 08.12.06 13:59

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

User-3 am 08.12.06 14:04

alternative?

User-6 am 08.12.06 14:29

hab ich oben geschriebe. vll auch statt addType ein setType

User-4 am 08.12.06 15:42

sry xyz-161... :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