Vraag & Antwoord

Webdesign (HTML, CSS, Flash)

Geluid downloaden

15 antwoorden
  • Hallo, Als ik op mijn website op een link klik om een MP3-bestand te downloaden, wordt dit geopend in de standaardspeler (bijv. Windows Media Player). Is er een mogelijkheid om dit zo te krijgen dat het bekende keuzevenster opent, met mogelijkheden als Openen en Opslaan?
  • De extensie .mp3 uit het de rij 'bestandstypen' verwijderen, maar of dat zal helpen? Ik denk dat je het gewoon moet houden op 'met de rechtermuisknop klikken' en dan kiezen voor opslaan als.
  • Ik denk het ook, maar wie weet... Met één of ander JavaScript ofzo. Iemand een idee?
  • ik denk dat je dat wilt voor iedereen die je website bezoekt, dus Frisons oplossing is niet echt wat je zoekt. Helaas is t afhankelijk van de instellingen van de bezoeker dus kan je r nix aan veranderen.
  • [quote:1ff1b22541="davykager"]Ik denk het ook, maar wie weet... Met één of ander JavaScript ofzo. Iemand een idee?[/quote:1ff1b22541] Je zou je mime type aan kunnen passen?
  • Je kunt er iets als [url=http://www.explodingpanda.com/rubberwall.php]Rubberwall[/url] of [url=http://www.stadtaus.com/en/php_scripts/download_center_lite/]Download Center Lite[/url] op zetten, dan krijg je een schermpje 'wil je dit opslaan?'.
  • Ik heb hiervoor laatst de oplossing gevonden voor een eigen project. Als je het op deze manier oplost krijgen in principe alle gebruikers het op de juiste manier aangeboden. We hebben het hier over een Forced Download met PHP. Benodigdheden: - Server met ondersteuning voor PHP Het handigste is om, net als ik heb gedaan, een script te schrijven dat dynamisch elk bestand kan "force-downloaden". Maak een nieuw PHP-bestand en noem dit bijvoorbeeld [b:638dc67634]file_download.php[/b:638dc67634]. Zet hier deze code in: [code:1:638dc67634]<?php header('Content-type: application/force-download'); header('Content-Disposition: attachment; filename="' . $file . '"'); header('Content-length: ' . filesize($file)); $file = $_GET['file']; $file = str_replace(".php", "", $file); readfile($file); ?>[/code:1:638dc67634] Als je nu de gebruiker een MP3-bestand, of wat voor ander bestand dan ook (.doc? .exe? whatever), wil laten downloaden, maak je een link als volgt: [code:1:638dc67634]<a href="file_download.php?file=NAAMVANBESTAND.MP3">Linktekst</a>[/code:1:638dc67634] Het slimste is om deze methode te gebruiken voor ALLES dat je op je web site voor download aanbiedt! Opmerkingen: De regel [i:638dc67634]header('Content-length: ' . filesize($file));[/i:638dc67634] is erg belangrijk, deze vertelt de browser namelijk ook meteen welke GROOTTE het bestand heeft. Heel vaak zie je dat webmasters dit niet doen, en het resultaat is dat de browser geen schatting kan geven van hoe lang het nog gaat duren; er staat dan iets als "104 KB van onbekende bestandsgrootte", en dat is erg frustrerend voor een gebruiker. De regel [i:638dc67634]$file = str_replace(".php", "", $file);[/i:638dc67634] voorkomt dat een gebruiker ook PHP-bestanden van je website kan downloaden om zo je server side code in te zien. Ik hoop iedereen die zich dit afvroeg hiermee te hebben geholpen!
  • Super! Ik had al een download.php-script lopen voor het aantal downloads dat mijn website gehad heeft, en ik ga deze code er meteen bij zetten!
  • Ok, laat me weten of je nog problemen tegenkomt, ik gebruikt het script zelf ook nog niet zo lang. ;) Ik heb het geschreven op basis van de informatie die ik kon vinden over de headers op php.net .
  • Of heel eenvoudig je bezoekers even zeggen dat ze ook rechts kunnen klikken, en zo te zien is dat al geopperd.
  • Klein probleempje: Het script probeert nu zichzelf te downloaden.
  • Moet het niet zo zijn? [code:1:c3b87a601b]<?php $file = $_GET['file']; $file = str_replace(".php", "", $file); header('Content-type: application/force-download'); header('Content-Disposition: attachment; filename="' . $file . '"'); header('Content-length: ' . filesize($file)); readfile($file); ?>[/code:1:c3b87a601b] Ik zou dit script persoonlijk niet zo gebruiken. Je stelt veel te weinig eisen aan die file-parameter. Dit script stelt iemand met kwade bedoelingen in staat om ieder willekeurig bestand te lezen. Door die str_replace worden bestanden met ".php" in de bestandsnaam wel uitgesloten, maar ik zou het toch iets stricter maken. Wat gebeurtBijvoorbeeld door alle bestanden die met dit script te downloaden zijn in een aparte map te plaatsen en die replace te vervangen door "str_replace("/", "", $file)".
  • Ik probeerde een bestand van een andere server te downloaden, dus daarom loopt dat script niet helemaal.
  • [quote:7bf64ff86a="SHARK"]Moet het niet zo zijn? [code:1:7bf64ff86a]<?php $file = $_GET['file']; $file = str_replace(".php", "", $file); header('Content-type: application/force-download'); header('Content-Disposition: attachment; filename="' . $file . '"'); header('Content-length: ' . filesize($file)); readfile($file); ?>[/code:1:7bf64ff86a][/quote:7bf64ff86a] Nee, want de headers moeten VERPLICHT altijd helemaal bovenaan, als allereerste, worden vermeld, als ik me niet vergis. Verder is dat idee van die directory op zich ook niet slecht. Het hele eiereten is echter dat alles op de server toch wel op de een of andere manier te downloaden is als het in de public_html map op de server staat. Dit script zou het enkel mogelijk maken om ook broncode van php te lezen. Op zich kan een kwaadwillend persoon daar nog niet veel mee, maar dat willen we toch over het algemeen graag voorkomen. [quote:7bf64ff86a="davykager"]Ik probeerde een bestand van een andere server te downloaden, dus daarom loopt dat script niet helemaal.[/quote:7bf64ff86a] Ik had dit eigenlijk nog niet geprobeerd, zeker aangezien dat ook helemaal niet het idee van het script was. Betreft het een bestand dat je niet zelf kunt hosten? Als het mogelijk is om ook bestanden van andere servers via deze weg te laten downloaden wil ik dat wel graag weten. Dit is overigens wel de manier waarop alle grote sites bestanden ter download aanbieden. Althans, met een vergelijkbaar script.
  • [quote:5fb1d46f18="LGoosens"][quote:5fb1d46f18="SHARK"]Moet het niet zo zijn? [code:1:5fb1d46f18]<?php $file = $_GET['file']; $file = str_replace(".php", "", $file); header('Content-type: application/force-download'); header('Content-Disposition: attachment; filename="' . $file . '"'); header('Content-length: ' . filesize($file)); readfile($file); ?>[/code:1:5fb1d46f18][/quote:5fb1d46f18] Nee, want de headers moeten VERPLICHT altijd helemaal bovenaan, als allereerste, worden vermeld, als ik me niet vergis. [/quote:5fb1d46f18] nee hoor, er moet alleen geen output naar de browser zijn voor header(). Maar $file = genereert geen output -behalve als er iets misgaat en er een error wordt gethrowd-. In jouw geval was $file nog niet bekend dus kon ook nooit de goede filename en -size naar de browser worden gestuurd.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.