Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Php Upload - Bestand krijgt verkeerd MIME

Hallo, ik heb een php upload script: [code:1:bb66f36593] <?php include ("mysql_connect.php"); if (!isset($_POST['submit'])) { ?> <table> <form enctype="multipart/form-data" action="upload.php" method="POST"> <tr><td>Bestand:</td><td><input name="uploaded" type="file" /></td></tr> <tr><td>Naam:</td><td><input type="text" name="naam"></td></tr> <tr><td>Beschrijving:</td><td><textarea rows="10" cols="30" name"beschrijving"></textarea> </td></tr> <tr><td>Tags ( gescheiden door spaties ):</td><td><input type="text" name="tags"></td></tr> <tr><td>Vak:</td><td> <select name="vak"> <option name="wiskunde" value="wiskunde">Wiskunde</option> <option name="geschiedenis" value="geschiedenis">Geschiedenis</option> <option name="aardrijkskunde" value="aardrijkskunde">Aardrijkskunde</option> <option name="nederlands" value="nederlands">Nederlands</option> </select></td></tr> <tr><td>Type:</td><td> <select name="type"> <option name="proefwerk" value="proefwerk">Proefwerk</option> <option name="verslag" value="verslag">Verslag</option> <option name="antwoorden" value="antwoorden">Antwoorden</option> <option name="werkstuk" value="werkstuk">Werkstuk</option> </select></td></tr> <tr><td><input type="submit" name="submit" value="Upload" /></td></tr> </form> </table> <? } else { include("mysql_connect.php"); $datum = date("Y/m/d"); $allowed_filetypes = array('.doc','.docx','.pdf','.html'); // These will be the types of file that will pass the validation. $target = "upload/"; $target = $target . basename( $_FILES['uploaded']['name']) ; $filename = $_FILES['uploaded']['name']; $ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); // Get the extension from the filename. if(!in_array($ext,$allowed_filetypes)) { die('Uw bestand heeft een verkeerde bestand type. U kunt alles Doc, Docx en Pdf uploaden!'); } if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) { if (mysql_query("INSERT INTO `bestanden` ( `bestandsnaam` , `username` , `naam` , `beschrijving` , `tags` , `vak` , `type` , `datum` ) VALUES ( '".$filename."', '".$_COOKIE['ID_allesvoorschool']."', '".$_POST['naam']."', '".$_POST['beschrijving']."', '".$_POST['tags']."', '".$_POST['vak']."', '".$_POST['type']."', '".$datum."'); ")) { echo "Het bestand ". basename( $_FILES['uploadedfile']['name']). " is geupload"; } else { echo "Sorry, er heeft zich een probleem voorgedaan."; } } else { echo "Sorry, er heeft zich een probleem voorgedaan."; } } ?> [/code:1:bb66f36593] Maar als ik bijvoorbeeld een docx bestand upload, en het dan via het volgende script download: [code:1:bb66f36593] <?php include ("mysql_connect.php"); $username123 = $_COOKIE['ID_allesvoorschool']; $check = mysql_query("SELECT * FROM members WHERE username = '$username123'")or die(mysql_error()); while($info = mysql_fetch_array( $check )) { if (!$info['punten'] > '0') { echo 'U hebt niet genoeg punten. U moet eerst wat uploaden!'; exit(); } } $dir = 'upload/'; //geef een map aan met eindslash (. voor deze map) if(isset($_GET['bestand'])) //als ?bestand= bestaat { if(eregi('../', $_GET['bestand']) == FALSE) //als er geen ../ in de bestandsnaam voorkomt, dus geen upmap wordt aangevraagd { if(file_exists($dir.$_GET['bestand'])) //en ?bestand=.. is ook nog eens een bestaand bestand is { header("Content-Type: application/force-download"); header("Content-Type: application/download"); header('Content-type: Application/octet-stream'); //zet de header dat het bestand gedownload moet worden //en dat het dus niet in de browser afgespeeld kan worden header('Content-Disposition: attachment; filename='.$_GET['bestand']); //geef aan welk bestand gedownload moet worden readfile($dir.$_GET['bestand']); //en open vervolgens dat bestand } else //als het bestand niet bestaat { echo 'bestand bestaat niet'; //echo dat } } else //als er wel ../ in de bestandsnaam voorkomt { echo 'Deze map is niet toegankelijk'; //echo dat dat niet mag } } else //als ?bestand= niet is opgegeven { echo 'Geen bestand opgegeven'; //echo dat } ?> [/code:1:bb66f36593] Dan werkt het niet en download hij een application/octet-stream. Als ik echter het via ftp upload, dan kan ik het wel downloaden. Hoe kan dit nou? Alvast bedankt! Bart

bartje545