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

0 antwoorden

    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.