Ik heb een script met daarin o.a. het onderstaande. Hierbij wordt o.b.v. een filename een file opgehaald uit een map die niet in de public_html staat. Het probleem is nu dat hij netjes een file (jpg of jpeg) binnenhaalt, maar die file is vervolgens niet te openen.
De code is als volgt:
Heeft er iemand een idee wat hier mis gaat?Code:// required for IE, otherwise Content-disposition is ignored if (ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off'); $path_info = pathinfo($filename); $file_extension = $path_info['extension']; switch ($file_extension) { case "pdf": $ctype = "application/pdf"; break; case "exe": $ctype = "application/octet-stream"; break; case "zip": $ctype = "application/zip"; break; case "doc": $ctype = "application/msword"; break; case "xls": $ctype = "application/vnd.ms-excel"; break; case "ppt": $ctype = "application/vnd.ms-powerpoint"; break; case "gif": $ctype = "image/gif"; break; case "png": $ctype = "image/png"; break; case "jpeg": case "jpg": $ctype = "image/jpg"; break; default: $ctype = "application/force-download"; //$ctype = "application/octet-stream"; } header("Pragma: public"); // required header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-disposition: attachment; filename={$filename}"); header("Cache-Control: private", false); // required for certain browsers header("Content-Type: $ctype"); header("Content-Disposition: attachment; filename=\"" . basename($filename) . "\";"); header("Content-Transfer-Encoding: binary"); header("Content-Length: " . filesize($filename)); readfile($file_path); exit();
- Ophalen files via script met
-
06-02-2014, 19:47 #1
- Berichten
- 703
- Lid sinds
- 17 Jaar
Ophalen files via script met PHP ctype
-
-
06-02-2014, 21:50 #2
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Re: Ophalen files via script met
Zet onderaan eens readfile($filename); in plaats van readfile($file_path);
-
08-02-2014, 11:20 #3
- Berichten
- 703
- Lid sinds
- 17 Jaar
Re: Ophalen files via script met
Nee, maakt helaas geen enkel verschil...
Iemand met een ander idee?
-
14-02-2014, 11:13 #4
- Berichten
- 703
- Lid sinds
- 17 Jaar
Re: Ophalen files via script met
Klein kickje
-
15-02-2014, 12:00 #5
- Berichten
- 28
- Lid sinds
- 11 Jaar
Re: Ophalen files via script met
$file_path is nergens defined, gebruik dit, werkt bij mij: readfile($path_info["dirname"]."/".$path_info["filename"].".".$path_info["extension"]);
-
22-02-2014, 19:11 #6
- Berichten
- 703
- Lid sinds
- 17 Jaar
Re: Ophalen files via script met
Eerder in het stuk code staat dit:
$file_path = '../../' . $file_directory . '/' . $filename;
-
26-02-2014, 19:13 #7
- Berichten
- 703
- Lid sinds
- 17 Jaar
Re: Ophalen files via script met
Kick!
-
15-03-2014, 10:09 #8
- Berichten
- 703
- Lid sinds
- 17 Jaar
Re: Ophalen files via script met
Nog een (laatste) kickje
-
17-03-2014, 20:22 #9
- Berichten
- 115
- Lid sinds
- 11 Jaar
Re: Ophalen files via script met PHP ctype
Is dit het volledige script?
-
18-03-2014, 13:42 #10
- Berichten
- 703
- Lid sinds
- 17 Jaar
Re: Ophalen files via script met
Min of meer.
Dit is het in het geheel:
Code:<?php //gegevens ophalen SESSION_START(); include ('../inc/config.php'); if ($_SESSION['bepaaldewaarde'] == 'Y') { // your download directory $file_directory = "mapnaam/".$_GET['dir']; $filename = $_GET['filename']; if (!isset($filename)) { //echo '<p>Je moet een bestandsnaam opgeven!</p>'; exit; } else { //$file_path = '../' . $file_directory . '/' . $filename; $file_path = '../../' . $file_directory . '/' . $filename; if ($filename == "") { //echo "<p>Je hebt geen bestandsnaam opgegeven!</p>"; exit; } elseif (!file_exists($file_path)) { //echo "<p>Bestand bestaat niet!</p>"; exit; } // required for IE, otherwise Content-disposition is ignored if (ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off'); $path_info = pathinfo($filename); $file_extension = $path_info['extension']; switch ($file_extension) { case "pdf": $ctype = "application/pdf"; break; case "exe": $ctype = "application/octet-stream"; break; case "zip": $ctype = "application/zip"; break; case "doc": $ctype = "application/msword"; break; case "xls": $ctype = "application/vnd.ms-excel"; break; case "ppt": $ctype = "application/vnd.ms-powerpoint"; break; case "gif": $ctype = "image/gif"; break; case "png": $ctype = "image/png"; break; case "jpeg": case "jpg": $ctype = "image/jpg"; break; default: $ctype = "application/force-download"; //$ctype = "application/octet-stream"; } header("Pragma: public"); // required header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-disposition: attachment; filename={$filename}"); header("Cache-Control: private", false); // required for certain browsers header("Content-Type: $ctype"); header("Content-Disposition: attachment; filename=\"" . basename($filename) . "\";"); header("Content-Transfer-Encoding: binary"); header("Content-Length: " . filesize($filename)); readfile($file_path); exit(); error_reporting(e_all); } } else { exit(); } ?>
-
18-03-2014, 14:36 #11
- Berichten
- 115
- Lid sinds
- 11 Jaar
Re: Ophalen files via script met PHP ctype
ik heb t script even bij mij getest op een server dit werkt prima zowel excel als pdf en jpg.
ik vermoed dat het komt doordat jij iets buiten je public_html vandaan probeert te halen en dat is niet zomaar mogelijk. test je script is met wat files in een map die in je public_html staat en kijk is of dit wel werk, zo ja dan is dit wel logisch want anders zou iedereen in je prive server mappen kunnen kijken
-
18-03-2014, 19:13 #12
- Berichten
- 115
- Lid sinds
- 11 Jaar
Re: Ophalen files via script met PHP ctype
en heb je het nog getest?
-
23-03-2014, 10:09 #13
- Berichten
- 703
- Lid sinds
- 17 Jaar
Re: Ophalen files via script met
Ja, helaas pas vandaag aan teogekomen. Maar je hebt wel helemaal gelijk.
Vanuit een map in public_html werkt het wel...
Op mijn oude server ging het echter wel... Dus moet het haast wel een setting zijn.
-
27-03-2014, 15:04 #14
- Berichten
- 20
- Lid sinds
- 11 Jaar
Re: Ophalen files via script met PHP ctype
@Erwin
Probeer dan ook in elk geval nooit met ../../ te werken maar het absolute pad te gebruiken.
Je zou gewoon bovenaan je script eenmalig het pad kunnen definiëren en het daarna overal toepassen.
PHP Code:define('baseURL','/var/www/html/'); // of gewoon $baseURL = '/var/www/html/';
include (baseURL.'config.php');
$file_path = baseURL.'$file_directory.'/'.$filename;
-
30-03-2014, 20:41 #15
- Berichten
- 703
- Lid sinds
- 17 Jaar
Re: Ophalen files via script met
Dag Remo,
Bedankt voor je reactie, maar ik heb nu:
Code:define('baseURL',str_replace('public_html','',$_SERVER['DOCUMENT_ROOT'])); $file_path = baseURL.$file_directory.'/'.$filename;
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic