Ga naar inhoud
  • 0

Php Upload - Bestand krijgt verkeerd MIME


anoniem

Vraag

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
Link naar reactie

0 antwoorden op deze vraag

Aanbevolen berichten

Er zijn nog geen antwoorden op deze vraag

Doe mee aan dit gesprek

Om te reageren, moet je eerst inloggen. Dit doe je door rechtsboven op inloggen te klikken.

Gast
Antwoord op deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...