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

bestand content script

Anoniem
spiderned
13 antwoorden
  • Hallo,

    Ik ben op zoek naar een scriptje wat ik in wil bouwen in een picture upload script.
    Het scriptje moet het ge-uploade bestand controleren dat het werkelijk een bitmap (*.jpg) is.
    Dus niet alleen maar kijken naar de extensie omdat die makkelijk te renamen is.
    Nu weet ik dat in de eerste 4 bits van elk bestand het type is opgeslagen, maar weet ff niet hoe ik dat in een scripje kan gieten.
    Het moet iig in php gescreven zijn.

    Ik hoop dat iemand me op weg kan helpen.
  • In aanvulling op mijn vorige post gaat het om hetvolgende soort scripje, maar dan voor php:

    [code:1:a1f52545bc]Upload - Check file contents to ensure the field is really an image

    Const imageExts = ".gif,.jpg,.png,.jpeg,.bmp"


    'This function checks filename and CONTENTS of a field
    'to recognize images
    Function IsImage(Field)
    If Instr(1, imageExts & ",", Field.FileExt & ",", 1)>0 _
    Or Left(Field.ContentType, 5) = "image" Then

    ' FFD8FF = JFIF
    ' 49492A00 = TIF
    If Field.HexString (0,3)="FFD8FF" Or Field.HexString (0,4)="49492A00" _
    Or Field.String(,6,4)="JFIF" Or Field.String(,0,3)="GIF" _
    Or Field.String(,1,3)="PNG" Or Field.String(,0,2)="BM" Then
    IsImage = True
    End If
    End If
    End Function[/code:1:a1f52545bc]
  • laat maar, ik heb het al opgelost. 8)

    topic kan dicht
  • Mag ik vragen hoe? Handig voor [i:87559deae6]future reference[/i:87559deae6].

    - Bas
  • mja.. blijft jammer als mensen een forum als eenrichtingsverkeer zien…
  • [quote:60b4e3e2bf="teacher"]mja.. blijft jammer als mensen een forum als eenrichtingsverkeer zien…[/quote:60b4e3e2bf]
    Nee ik krijg lekker veel respons :roll:

    Jammer van deze reactie teacher, ik wilde net mijn oplossing posten…………
  • En voor straf doe je dat nu niet?
  • nou ik vind het een beetje jammer dat er van een mod zo'n reactie kom.

    Ik heb deze posts een paar dagen geleden gezet en krijg geen enkele respons.
    Maak verder niet uit, geen probleem.
    Ik post dan uiteindelijk dat het topic dicht kan omdat ik de oplossing al heb.

    Dan vraag Bas om hem evt. te posten en ik was dat dan ook van plan, maar daar komt dan ineens teacher (die ik de afgelopen dagen niet in dit topic heb zien posten) met de opmerking dat sommige (in het algemeen) en ik (in het bijzonder) dit forum als eerichtingsverkeer ziet.

    Nee nu wordt hij mooi, ík was de enige die in dit topic postte :o

    Stom van mij dat ik na een paar jaar hier weer kom om iets te vragen, krijg je meteen deze achterlijke opmerkingen.
  • ik vind het niet erg netjes dat spiderned wel een antwoord verwacht van de mensen op dit forum, maar vervolgens niet zijn antwoord deelt wanneer hij deze gevonden heeft.

    Daarom heb ik zelf even gekeken naar een oplossing.. Het script dat ik heb geschreven controleert of het geuploade bestand inhoudelijk een jpeg is, aan de hand van jpg's file signature. Hiervan heb ik de hexadecimale weergave genomen omdat er twee rare tekens tussen zitten wat wel eens problemen kan opleveren in sommige editors (en bij het uploaden naar dit forum :P). Op deze manier zou het altijd moeten werken.

    [code:1:6f73367ff8]
    <html>
    <body>

    <p>
    <?
    if ($_SERVER["REQUEST_METHOD"] == "POST")
    {
    // Controleer of er een bestand is geupload
    if ($_FILES["myfile"]["size"] > 0)
    {
    // Lees de inhoud van het bestand
    $file = file_get_contents($_FILES["myfile"]["tmp_name"]);

    // Controleer of het bestand inhoudelijk een JPEG is
    if (bin2hex(substr($file, 0, 10)) == "ffd8ffe000104a464946")
    {
    // Het bestand is inderdaad een jpeg
    echo "Je hebt een geldige JPEG geupload!";
    }
    else
    {
    // Het bestand is geen jpeg
    echo "Je bestand is geen jpeg!";
    }
    }
    else
    {
    echo "U heeft geen bestand geupload!";
    }
    }
    ?>
    </p>

    <p>
    <form method="post" enctype="multipart/form-data">
    <table>
    <tr><td>Kies een jpeg om te valideren:</td>
    <td><input type="file" name="myfile"></td></tr>
    <tr><td /><td><input type="submit" value="Valideer!" />
    </form>
    </p>

    </body>
    </html>
    [/code:1:6f73367ff8]
  • [quote:9a69ae378d="spiderned"]nou ik vind het een beetje jammer dat er van een mod zo'n reactie kom.[/quote:9a69ae378d]

    Jep.. ik ben nét een echt mens.

    Maar goed, als je te weinig respons krijgt op je topic, dan is wellicht de vraagstelling onduidelijk, of niet iedereen heeft tijd (het is tenslotte vrijblijvend) om zich te verdiepen in jouw probleem. Patience is a virtue…

    [quote:9a69ae378d="spiderned"]
    Stom van mij dat ik na een paar jaar hier weer kom om iets te vragen, [/quote:9a69ae378d]

    Precies mijn punt toch? :)
  • Wellicht ten overvloede, maar omdat ik ook niet tegen kinderachtig gedrag kan hier nog een andere oplossing voor de liefhebbers: je kunt het op linux eventueel ook doen via de command-prompt, en via PHP de output daarvan opvangen met exec. Het commando is:[code:1:20ca74c72f]file -ib myfilename[/code:1:20ca74c72f]En in PHP zou dat dan zoiets zijn:[code:1:20ca74c72f]<?php
    $mimetype = exec('file -ib '. escapeshellarg($strFilePath) );
    ?>[/code:1:20ca74c72f]waarbij $strFilePath het volledige pad + filename van het plaatje is. (het nut van escapeshellarg staat hier). De return value van een jpg bestand is dan 'image/jpeg', dus om het simpel te houden:[code:1:20ca74c72f]if ($mimetype == 'image/jpeg') {
    // dit is een jpeg plaatje
    } else {
    // dit niet
    }[/code:1:20ca74c72f]Op zich wel een handige methode (naar mijn mening (met alles respect) ook wat leesbaarder dan de vorige oplossing die werd gegeven) omdat je zo ook eventuele andere toegestane plaatjes kunt afvangen (misschien ook gif en png?). Hier staat een lijst van mogelijke mimetypes (lang niet compleet natuurlijk, maar je komt er een heel eind mee).

    Daaraan wil ik nog toevoegen (maar dat had de topic starter geloof ik al door) dat de waarde van de variabele $_FILES['file']['type'] [b:20ca74c72f]NIET[/b:20ca74c72f] het juiste mimetype hoeft op te geven! Deze waarde is slechts gebaseerd op de extensie van het bestand, dus als een jpg file toevallig buur.doc heet, krijgt de ['type'] variabele niet de juiste waarde! Maar goed…
  • [quote:a67dab2a9f="teacher"][quote:a67dab2a9f="spiderned"]nou ik vind het een beetje jammer dat er van een mod zo'n reactie kom.[/quote:a67dab2a9f]

    Jep.. ik ben nét een echt mens.

    Maar goed, als je te weinig respons krijgt op je topic, dan is wellicht de vraagstelling onduidelijk, of niet iedereen heeft tijd (het is tenslotte vrijblijvend) om zich te verdiepen in jouw probleem. Patience is a virtue…
    [/quote:a67dab2a9f]
    Heb jij ergens gelezen dat ik [b:a67dab2a9f]klaag[/b:a67dab2a9f] dat er niet of weinig respons komt?

    en als men nu ff goed leest, dan ziet men dat ik mijn oplossing wilde posten, totdat er ineens iemand met een opmerking komt dat sommige een forum zien als 1 richtingsverkeer.

    Ik begin ook steeds meer te begrijpen dat het hier steeds rustiger wordt.
    En dan heb ik het nog niet eens over het trage en vol met reclame gepompte forum.

    :D
  • [quote:2801d1d613="spiderned"]
    En dan heb ik het nog niet eens over het trage en vol met reclame gepompte forum.

    :D[/quote:2801d1d613]

    Serieus.. ik zou willen dat het anders was….

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.