Vraag & Antwoord

Webprogrammeren & scripting

PHP: bestand van een andere server downloaen

10 antwoorden
  • Hallo! Ik heb een script dat een bestand downloadt. Dit script opent altijd een downloadvenster, zelfs als er een programma is dat het bestand kan openen (zoals een MP3-bestand met Winamp geopend kan worden). Overigens wil ik de bouwer van dit script nog even bedanken! Maar nu wil ik een bestand van een andere server af downloaden, zodat de URL zo wordt: http://www.site.nl/bestand.mp3. Maar dit werkt niet, het script gaat dan zichzelf downloaden. Althans, zijn eigen bestandsnaam. De vraag: Is er een extra PHP-code vereist om via HTTP te downloaden, of kan dit gewoon niet?
  • Is het niet gewoon makkelijk om het desbetreffende bestand op je eigen server te zetten. 1) je hoeft het script niet aan te passen 2) je snoept van iemand anders geen dataverkeer af.
  • Iets meer info; post je code ff hier neer; en zet hem ff online.
  • Die bestanden kunnen niet op mijn server staan, want dat past niet. Het gaat me erom dat ik deze bestanden van de andere server af kan downloaden.
  • De code:[code:1:cf0b1303e6] <?php $id = $_GET['id']; header('Content-type: audio/mpeg'); header('Content-Disposition: attachment; filename="' . $id . '"'); header('Content-length: ' . filesize($id)); readfile($id); ?>[/code:1:cf0b1303e6]
  • welke waarde bevat de variabale $_GET['id'] ?? en als ik het me goed herinner heeft php moeite met bestanden van andere servers aan te bieden/te openen/etc.
  • $_GET['id'] krijgt de waarde van id, en dat is een volledig, absoluut adres.
  • Is er misschien iets te bereiken met "fopen()"?
  • Is er misschien iets te bereiken met "fopen()"?
  • fopen is voor het lezen, en bewerken van (text)bestanden. Lees ook dit stukje: [quote:a15a87c5a0] [b:a15a87c5a0]fopen() bindt een genaamde resource, aangegeven met filename, aan een stream. Als filename van het formaat "schema://..." is, dan wordt aangenomen dat het een URL is en PHP zal dan zoeken naar een protocol handler (ook bekend als een wrapper) voor dat schema. Als er geen wrapper voor dat protocol geregistreerd is, zal PHP een notice weergeven om je te helpen mogelijke problemen in je script te achterhalen en zal dan doorgaan alsof filename verwijst naar een normaal bestand.[/b:a15a87c5a0] Als PHP heeft besloten dat filename verwijst naar een lokaal bestand, dan zal het proberen om een stream te openen naar dat bestand. Het bestand moet toegankelijk zijn voor PHP, dus je moet er voor zorgen dat de bestands rechten dit toestaan. Als je safe mode of open_basedir aan hebt staan, kunnen er andere restricties gelden. Als PHP heeft besloten dat filename verwijst naar een geregistreerde protcol en dat dat protocol is geregistreerd als een netwerk URL, dan zal[b:a15a87c5a0] PHP controleren of allow_url_fopen aan staat. Als het uit staat, dan zal PHP een waarschuwing weergeven en fopen zal dan falen. [/b:a15a87c5a0][/quote:a15a87c5a0][/b]

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.