Afspelen hash-mp3s via PHP

Status
Niet open voor verdere reacties.

Laurax

Gebruiker
Lid geworden
19 apr 2009
Berichten
22
Hallo,

Via een php-pagina upload ik mp3-bestanden naar een mysql-database. In de tabel komt de mp3 als een md5-hash-naam te staan en tegelijkertijd wordt het daadwerkelijke bestand in een directory opgeslagen. Dit bestand in de directory heeft dezelfde hash-naam als in de database. Tot zover gaat alles goed.

Nu wil ik, vanaf een php-pagina, deze mp3-bestanden weer afspelen. Ik heb wat php-code geschreven die de inhoud van de tabel laat zien als links. Als ik zo'n mp3-bestand aanklik, dan opent een nieuw scherm met allerlei rare tekens. Klopt op zich wel want IE weet natuurlijk niet wat ie met een mp3-bestand aanmoet. Upload ik een .wav-file, en klik ik dan op de link van deze file, dan krijg ik netjes een schermpje of het bestand geopend of opgeslagen moet worden.

Vraag : hoe kan ik, met 1 druk op de knop op de link, het mp3-bestand afspelen? Het embedden van een mp3 gaat niet omdat het een hash-bestand betreft zonder .mp3-extensie.

Heeft iemand hier ervaring mee? En wat kan ik doen? Ik hoop dat ik het goed heb uitgelegd..ik ben ook maar een beginner :o


Alvast bedankt, groetjes,

Laura
 
Je bedoelt de .mp3 aanbieden alsof je hem probeert te openen via het web? Wat er precies mee gebeurd is namelijk afhankelijk van de browser van de gebruiker.

Als je de browser mee wilt geven dat je rauwe output een mp3 file is, dan moet je de juiste html-header meesturen.

Dat kun je doen met de functie header() van PHP, je kunt hier meer vinden:
http://nl3.php.net/manual/en/function.header.php

Zie het voorbeeld voor het downloaden van een PDF file, maar dan moet je even de header voor een mp3 file erbij zoeken.
Dan zou het moeten werken.
 
Bedankt voor je snelle antwoord, Frats :)

Ik heb het doorgenomen en in mijn php-bestand het volgende geplaatst :

Code:
<?php
header('Content-type:audio/mp3');

Nu krijg ik de foutmelding "Warning: Cannot modify header information - headers already sent by (output started at E:\xampp\xampp\htdocs\SS_NEW\music.php:29) in E:\xampp\xampp\htdocs\SS_NEW\music.php on line 30"

Regels 29 en 30 zijn degene die ik hierboven heb aangegeven. Ik zie zo snel niet iets waardoor dit veroorzaakt wordt. Als ik via Google zoek op deze foutmelding, dan komt heel vaak het "whitespacing" verhaal naar voren. Maar ik kan ze niet vinden.

Heb jij nog ideeen? Alvast bedankt weer en groetjes,

Laura
 
Is wat je daar laat zien de file die aangeroepen wordt? Het probleem is idd bijna altijd whitespace; je hebt ergens iets geoutput.

Dit bijv. geeft je al de fout in kwestie:

Code:
<?php 
header();
?>

Omdat er een enter staat boven de PHP mode.

Als deze pagina een include is, dan geeft die andere pagina waarschijnlijk output (een spatie aan het begin of eind, ofzo?)
 
Hoi Frats,

Wederom bedankt voor je snelle antwoord. Dit is mijn code :

Code:
<?php
header('Content-type:audio/mp3');
include("my-sql-hookup.php");

$query=mysql_query("SELECT Id,Bestand,Comment,Titel FROM tbl_muziek;");

echo("<table>");
while($row=mysql_fetch_assoc($query))
{
    echo("<tr>\n");
    //echo("\t<td><a href='download.php?id=".$row['id']."'>".$row['titel']."</a></td>\n");
    echo("\t<td><a href='music/".$row['Bestand']."'>".$row['Titel']." </a></td>\n");
    echo("\t<td>".$row['Comment']."</td>\n");
    echo("\t<td>".$row['filetype']."</td>\n");
    echo("\t<td>".$row['filesize']."</td>\n");
    echo("</tr>\n");
}
echo("</table>");
mysql_close();
?>

Zonder die toevoeging "header('Content-type:audio/mp3');" werkte dit prima. Maar enkel en alleen het toevoegen van deze regel geeft de Warning-foutmelding. Ik ben nog maar een beginneling met PHP dus ik sluit zeker niet uit dat er een fout van mijn kant in zit..maar ik blijf het vreemd vinden dat het toevoegen van die header-regel, de warning veroorzaakt.

Alvast bedankt weer :) Groetjes,

Laura
 
De warning-error is nu opgelost. De php-code die ik had gepost stond in het midden van de pagina. Deze code heb ik nu helemaal bovenin het bestand geplaatst en nu is de melding weg...oops :o

De header lijkt nu ook opgepakt te worden. Helaas genoeg ben ik nu niets verder gekomen. De mp3's worden nog steeds als rare tekens getoond.

Overigens, als ik die headers in mijn php-bestand zet, dan wordt het php-bestand als mp3 afgespeeld...dat klopt ook niet. :(

Heeft iemand nog ideeen? Alvast bedankt weer. Groetjes,

Laura
 
Laatst bewerkt:
Ik heb het opgelost door het mp3/hash-bestand, die in de directory wordt gezet, in PHP "hard" met toevoeging de extensie .mp3 te laten neerzetten. Eigenlijk is de md5 hash nu overbodig geworden hiermee maar ach..

In de .php die de tabel weer terug opvraagt heb ik de link aangepast zodat deze altijd met extensie .mp3 wordt opgevraagd.

Op zich zullen er wel betere opties zijn maar voor mij werkt dit wel. En die headers bleken niet eens nodig.

Frats, harstikke bedankt voor het meedenken! ;) :thumb:

Laura
 
Graag gedaan en goed om te zien dat het opgelost is :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan