blob image uitlezen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Developer

Functie omschrijving Als PHP Developer ga jij aan de slag met uitdagende software projecten. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Deze software bouw je vooral in PHP en specifiek Laravel. Dit framework kent dus geen geheimen voor jou. De software die jij gaat ontwikkelen is heel divers, van urenregistratiesystemen tot compleet geautomatiseerde tools. In deze veelzijdige functie ga jij je zeker niet vervelen, elke dag bestaat weer uit nieuwe uitdagingen. Bedrijfsprofiel Deze

Bekijk vacature »

Medior Java developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Fullstack JavaScript Developer Webapplicaties

Bedrijfsomschrijving Voor deze organisatie ben ik op zoek naar een getalenteerde Fullstack JavaScript Developer. Ze is een snelgroeiend software development agency dat zich richt op het ontwikkelen van moderne webapplicaties en complexe systemen voor haar klanten. Ze is gevestigd onder de rook van Utrecht en heeft als doel om tot de top van de Nederlandse agencies te behoren. Deze organisatie maakt softwareoplossingen voor verschillende soorten bedrijven. Innovatie staat hoog in het vaandel en je zult dus met nieuwe technieken aan de slag gaan. Ze hebben klanten in vele branches zitten, zoals retail, finance, gezondheid en onderwijs. De diverse klanten zorgen

Bekijk vacature »

Software ontwikkelaar

Ben jij graag bezig met verschillende projecten? Vind jij beleving van klanten én medewerkers ook belangrijk? Wij zijn vanwege de doorontwikkeling van het applicatielandschap van onze opdrachtgever op zoek naar een fulltime software ontwikkelaar. Omschrijving Jij en jouw collega’s zijn verantwoordelijk voor de continuïteit en waarborging van het applicatielandschap. Om de processen vloeiend te laten verlopen is software ontwikkeling daarom van essentieel belang. Onze opdrachtgever doet dit voornamelijk zelf, met door hun eigen ontwikkelde applicaties. Dit betekent dat jij: functionele eisen vertaalt naar gebruiksvriendelijke software; tijdens SCRUM sessies advies geeft over het te bouwen ontwerp; nieuwe software ontwikkelt en het

Bekijk vacature »

C#.NET-developer - JUNIOR

Functie omschrijving Voor een leuke opdrachtgever in omgeving Brielle zijn wij op zoek naar een junior developer. Werk jij graag met de volgende tools & technieken? C#, .NET, ASP.NET, MVC en SQL? Kijk dan snel of dit iets voor jou is! Als programmeur bij een productiebedrijf zal je voornamelijk nieuwe software schrijven maar ook bestaande software verbeteren. Verder werk je veel samen in back end projecten met leuke collega's. Bedrijfsprofiel Met een team van ruim 130 personen staan ze elke dag weer klaar om IT en Business te combineren door het ontwikkelen van producten op maat. Er zijn 3 teams,

Bekijk vacature »

Implementatie specialist

Standplaats: Honselersdijk Aantal uren: 32 – 40 uur Opleidingsniveau: HBO werk- en denkniveau Ben jij de implementatie expert die onze klanten helpt bij het integreren van de Greencommerce software? Ben jij daarnaast communicatief sterk, denk jij graag in verbeteringen en heb je ervaring met ICT? Lees dan snel verder! Bedrijfsinformatie Jem-id is een grote speler op het gebied van software ontwikkeling. Zo zijn wij continu bezig met het ontwikkelen van de meest innovatieve software voor de AGF- en sierteeltsector. We creëren oplossingen die er toe doen en verbinden klanten niet alleen op technisch vlak, maar zoeken ook de verbinding in

Bekijk vacature »

SQL Database ontwikkelaar

Functie omschrijving Wil jij meewerken aan het creëren van slimme software om magazijnen als een geoliede machine te laten lopen? Wij zoeken een zorgvuldig persoon, iemand die niet snel de hand omdraait voor complexe algoritmes. Denk jij dat jij de SQL ontwikkelaar bent die wij zoeken? Lees snel verder en wie weet zitten we binnenkort samen aan tafel! Jouw werkzaamheden zullen er als volgt uitzien: Je houdt je bezig met het ontwerpen en ontwikkelen van MS SQL server databases, dit doe je met T-SQL als programmeer laag. Je gaat aan high-end software oplossingen werken, dit doe je voor de optimalisatie

Bekijk vacature »

Front end developer

Functie Binnen de functie van Front-end developer werk je mee aan uitdagende klantprojecten. In teamverband werk je aan de voorkant van onze state-of-the-art portaal oplossingen en apps. Dit alles gebeurt in een multidisciplinaire omgeving waarbij je de ruimte hebt om te sparren, je ideeën scherp te stellen, en waar je met de benodigde kennis en ervaring om je heen altijd terecht kunt bij je collega’s voor vragen en ondersteuning. Meestal werk je vanuit ons kantoor maar we bieden ook alle faciliteiten om thuis te kunnen werken. Voor sommige projecten ga je mee naar de klant, wellicht zelfs in het buitenland!

Bekijk vacature »

Als Front-end developer bijdragen aan het onderwij

Functie Als front-end developer om je terecht in een team van goede en ervaren developers, en ga je werken aan de software die door miljoenen mensen gebruikt wordt. Je bent in staat om designs effectief te vertalen naar werkende feautures en hebt oog voor een goede UX van het product. Je staat voor clean code en goede documentatie. Je ziet toegevoegde waarde in het beoordelen van het werk van collega’s om zo samen te streven naar hoge kwaliteit software en code. Je dagelijkse werk bestaat uit het werken aan componenten in de Storybook. Het verbeteren en refactoren van de huidige

Bekijk vacature »

Magento2 Developer

Functie Ben jij een ontwikkelaar en wil jij een volgende stap zetten en als teamlead aan de slag? Lees dan snel verder! Voor een gewilde opdrachtgever in omgeving Delft zijn wij op zoek naar een programmeur die als meewerkend voorman aan de slag wilt gaan. Een developer die een team van twee man aan zal sturen. Jouw werkzaamheden zullen er als volgt uitzien; Ontwikkelen en ontwerpen van API's; Maatwerkoplossingen; Databeveiliging; Optimalisatie webshops; Ontwikkelen technische implementaties voor verbetering database; Aanspreekpunt voor de organisatie en verantwoordelijk voor de aansturing van externe developers. Zoek je veel uitdaging en veelzijdigheid in je werk dan

Bekijk vacature »

Back-end Developer Java

Dit ga je doen Het (door)ontwikkelen van een zelfgebouwde applicatie in Java, Spring Framework, SQL, HTML, CSS en Javascript; End-to-end beheer m.b.t. de applicatie en koppelen van applicaties binnen het landschap; Ontwikkelen van rapportages voor de interne organisatie; Ontwikkelen van aanvullende functionaliteiten m.b.t. de applicatie; Uitvoeren van testen en code reviews. Hier ga je werken Binnen deze organisatie kom je te werken op de afdeling die medische gegevens verzamelt vanuit het hele land. Denk hierbij aan vertrouwelijke persoonsgegevens. Het team verwerkt al deze data met als doel het waarborgen en verbeteren van de kwaliteit van de zorg in heel Nederland.

Bekijk vacature »

Developer Angular & Kotlin

Dit ga je doen Het (door)ontwikkelen van mobiele apps en webapplicaties; Het opstellen van technisch ontwerp en het bespreken van ontwerpen met de software architect; Het uitvoeren van werkzaamheden op het gebied van technisch testen; Het in de gaten houden van nieuwe ontwikkelingen op jouw vakgebied en het adviseren van de organisatie hierover. Hier ga je werken Het gaat om een bekend internationaal handelsbedrijf met ruim 800 medewerkers, verdeeld over verschillende deelbedrijven. Deze organisatie is van oorsprong een familiebedrijf, er wordt hard gewerkt, er heerst een no nonsense en doeners mentaliteit, een informele sfeer en er is een mix van

Bekijk vacature »

Hands-on Solution Architect / Software Architect (

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Solution Architect / Software Architect op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je werkt samen met gedreven DevOps teams, bestaande uit frontend, backend en middleware developers, testers, UX-designers. Samen met de teams ben je continu op zoek naar de beste oplossingen voor onze klanten. Als Solution Architect onderzoek

Bekijk vacature »

Ontwikkelaar MS Dynamics 365 Projecten

Samengevat: Deze werkgever is de kwaliteitsdienst in de tuinbouwsector. Ben jij een ervaren ontwikkelaar? Heb jij ervaring met Ms Dynamics 365 BC? Vaste baan: Ontwikkelaar Ms Dynamics 365 BC ICT MBO 3.500 - 5.000 Ontwikkelaar Ms Dynamics 365 BC Ons bedrijf bewaakt en bevordert de kwaliteit van producten, processen en ketens in de tuinbouw. Wij kenmerken zich door openheid, ruimte voor initiatief, collegialiteit en zelfontplooiing. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Functie: Voor de vacature als Ontwikkelaar Ms Dynamics 365 BC Roelofarendsveen MBO

Bekijk vacature »

Junior Outsystems developer

Functie Als junior Outsystems developer wordt jij onderdeel van een multidisciplinair team van 23 software engineers. Ons team werkt agile en termen als Continuous Integration en Continuous Delivery zijn bij ons dagelijkse koek. Wij werken aan uitdagende en afwisselende projecten met als doel onze klanten een totaal oplossing aan te bieden. Als junior Outsystems developer krijg jij bij ons de kans om jezelf te ontwikkelen naar een volwaardige ervaren en gecertificeerde Outsystems developer. Jij een team met ervaren mensen (10+ ervaring) om je heen. Zo heb jij niet het gevoel dat jij meteen in het diepe wordt gegooid en uiteraard

Bekijk vacature »
Joren vh

joren vh

10/01/2014 11:55:26
Quote Anchor link
Hallo,

Voor een betreffend klein projectje sla ik enkele afbeeldingen op in mijn database. (dat dit niet done is etc weet ik allemaal, maar heb dit gedaan omdat het toch maar enkel foto's zijn, dus dan weten jullie ookal waarom ik ze opslaag in mijn database.)

Nu tot over een week gebruikte ik dit stukje code om mijn foto's uit te lezen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$connect
= new mysqli('localhost', 'root', 'root', 'ioutfit');
    $result = $connect->query('SELECT foto from tblFotos ORDER BY PK_fotoID');
    while($row = $result->fetch_array()) {
        echo '<img src="data:image/jpeg;base64,' . base64_encode($row['foto']) . '" width="100%" height="100%"/>';
        echo '<br>';
        //echo $seisoon;
    }
?>

Nu wou ik vandaag verder werken aan mijn project blijkt nu dat deze code op mijn server iet meer werkt? lokaal toont hij nog enkele afbeeldingen maar online dus geen enkele meer. (wel toont hij een kader met een gebroken foto in zoals het geen je zou krijgen als je pad naar een image op de server niet gevonden is)

Iemand die ziet wat mijn fout is of hoe je dit op een andere manier kan uitlezen?

Bijkomende vraag, betreffende dezelfde app heb ik dus ook een upload scriptje geschreven, werkt perfect op de computer MAAR mobiel op iphone slaagt hij een blob op van 0 bytes? Android doet het dan weer wel goed. Iemand hier enige ervaring mee?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
    $connect
= new mysqli('localhost', 'root', 'root', 'ioutfit');
    if(isset($_POST['send'])) {
        var_dump($_FILES['myfile']);
        var_dump($_POST);
        //echo 'the form has been submitted';
        if($_FILES['myfile']['size'] == 0) {
            //geen bestand geselecteerd
            echo "Gelieve een foto te selecteren";
        }

        if($_POST['seisoon'] == null) {
            echo "gelieve een seisoon in te vullen";
        }

        else {
            $file = file_get_contents($_FILES['myfile']['tmp_name']);
            $file = base64_decode($file);
            $seisoon = $_POST['seisoon'];
            $seisoon = strtolower($seisoon);
            $user = 1;
            if($seisoon == "winter" || $seisoon == "lente" || $seisoon == "zomer" || $seisoon == "herfst") {
                //echo 'check!';
                //mysql_ping($connect);

                $query = "INSERT INTO tblFotos (FK_userID, foto, seisoon) VALUES (" . $user . ",'" . $file. "','" . $seisoon . "')";
                $result = mysqli_query($connect, $query);
                echo $file;
                if(!$result) {
                    die("Database query faild : " . mysqli_error($connect));
                }

                else {echo 'success';}
            }

            else {
                echo 'gelieve een geldig seisoon in te vullen';
            }
        }
    }

?>

<form method="post" action="input-test.php" id="upload-form" name="upload-form" enctype="multipart/form-data">
<input id="myfile" name="myfile" type="file" accept="image/*;capture=camera">
<input id="seisoon" name="seisoon" type="text" />
<input type="submit" name="send" id="send" value="send" />
</form>


Al vast bedankt,
Joren
 
PHP hulp

PHP hulp

19/06/2024 19:07:07
 
- Ariën  -
Beheerder

- Ariën -

10/01/2014 12:05:29
Quote Anchor link
Ik heb even wat getroubleshout, en ik kwam uit op dit:
http://php.net/manual/en/mysqli-stmt.send-long-data.php

Misschien heb je er wat aan? Ik werk nooit met BLOB namelijk.
 
Erwin H

Erwin H

10/01/2014 12:15:04
Quote Anchor link
Joren van hocht op 10/01/2014 11:55:26:
(dat dit niet done is etc weet ik allemaal, maar heb dit gedaan omdat het toch maar enkel foto's zijn, dus dan weten jullie ookal waarom ik ze opslaag in mijn database.)

Of het not done is of niet is op zich niet zo relevant. Dat is jouw keuze. De vraag die ik mezelf alleen wel zou stellen is 'Zou ik dit probleem ook hebben als ik het niet als BLOB zou opslaan?'. Het antwoord daarop is volgens mij nee. Met andere woorden, ik denk dat je je tijd nu bestaat aan een probleem wat je helemaal niet hoeft te hebben. Verkwanselde tijd en energie dus.

Verder kan ik je net als Aar niet echt helpen, want ik heb er, helaas voor jou, nooit mijn tijd aan besteed....
 
Joren vh

joren vh

10/01/2014 12:27:46
Quote Anchor link
Bedankt voor jullie antwoorden!
Erwin, inderdaad ik heb mij hier serieus aan mispakt ben ik mezelf heel erg bewust van, probleem zit hem dus dat heel mijn mobile web app hier opgebasseerd is en en dus opnieuw beginnen geen optie is aangezien mijn deadline volgende week is.

Ik ben er net wel al achtergekomen dat het uitlezen volledig correct gebeurt, het is mijn upload die blijkbaar toch niet werkt op computer. Ik had net al mijn records verwijderd om wat represente data toe te voegen, dit toevoegen deed ik dus via mijn upload script. Blijkbaar had ik in een vorig statium mijn foto's dus via phpmyadmin toegevoegd, wat ik dus vergeten was (wel logisch want toen had ik dit script nog niet geschreven).

Ik weet nu toch al waar mijn fout zit en kan weer wat specifieker gaan zoeken op google, als er hier mensen zijn die ervaring hebben met het upload van een blob in de database, jullie hulp/tips wordt nog steeds erg geapreciërd!

Joren
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/01/2014 13:24:34
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
    ob_start();
    readfile($_FILES['myfile']['tmp_name']);
    $file = ob_get_contents();
    ob_end_clean();
    // EN DAN NIET VERGETEN!!!!
    // mysqli_real_escape_string($link, $file)
    // geldt tevens voor alle overige user input

?>
Gewijzigd op 10/01/2014 13:25:09 door Ger van Steenderen
 
Willem vp

Willem vp

10/01/2014 14:35:19
Quote Anchor link
Joren van hocht op 10/01/2014 12:27:46:
als er hier mensen zijn die ervaring hebben met het upload van een blob in de database

Ja en nee. ;-) Ik heb verschillende databases waar foto's in worden opgeslagen als blobs, alleen bewerk ik die niet in PHP, maar in Perl. Het principe zou hetzelfde moeten zijn.

Een van de verschillen die me opvallen qua werkwijze is dat bij jou de foto's als binary data in de database staan, maar dat ze bij de invoer en uitvoer worden omgezet van of naar base64. Daar zou ik zelf niet per se voor kiezen. Als ze worden aangeleverd als base64 en ook als base64 weer worden aangeboden, zou ik ze ook als base64 opslaan in de database (en dan niet als blob, maar als text).

Zelf verwerk ik alles als binary. De plaatjes komen binnen als POST-data (binair) en gaan rechtstreeks de database in.

Bij het opvragen/tonen van de plaatjes worden ze niet als inline data in de img-tag opgenomen. In plaats daarvan verwijst de img tag naar een los script, dus iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
   <img src="/getimage.php?id=42">

In dat getimage-script wordt het plaatje opgehaald uit de database. Het script genereert een image/jpeg-header en gooit daarna de (binaire) data erachteraan. Zoiets ongeveer:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
header('content-type: image/jpeg');

include "dbconnect.php";
$rs = mysqli_query("select plaatje from tabel where id=$_POST[id]");
$rec = $rs->fetch_row();
print $rec[0];
?>

(disclaimer: dit is conceptuele code; ik garandeer niet dat het werkt en dingen als inputvalidatie en foutafhandeling zul je nog moeten toevoegen)
Gewijzigd op 10/01/2014 15:11:40 door Willem vp
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/01/2014 14:58:50
Quote Anchor link
Ik was nog vergeten te melden dat de code in mijn vorige reactie gedeeltelijk uit een bestaand en werkend script komt. Het enige verschil is dat de output buffer wordt gevuld met imagejpeg ipv readfile.

En dan zoals Willem aangeeft de plaatjes ophalen met een script.

En Joren, je controleert nergens of het wel een image is, dus ik kan zomaar een bestand met malicious code erin gooien.
 
Ivo P

Ivo P

10/01/2014 19:58:46
Quote Anchor link
nadeel van de methode <img src="/getimage.php?id=42">
is dan weer dat je voor elk plaatje een apart script met een aparte database verbinding nodig hebt.

Nadeel van de inline-images is weer, dat je html file erg groot dan worden en je mogelijk per saldo weer meer data moet oversturen, ( al dan niet gezipt)
 
Willem vp

Willem vp

10/01/2014 22:24:13
Quote Anchor link
Dat van die database-verbindingen zal in de praktijk wel meevallen. Eventueel kun je een persistent connectie maken door in je mysqli_connect 'p:' voor je hostname te zetten.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/01/2014 13:15:43
Quote Anchor link
Het valt ook heel erg mee, en ik begrijpt niet waarom heel veel mensen het not done vinden. Waarschijnlijk uit onwetendheid.
 
Ivo P

Ivo P

11/01/2014 13:37:20
Quote Anchor link
technisch valt het wel mee, wat er gebeurt. Maar stel dat je een pagina hebt met 3 afbeeldingen.

Dan is het niet 1 aanroep naar PHP gevolgd door het opvragen van die 3 afbeeldingen,

maar nog een keer 3x php aanroepen. Elk script heeft zijn eigen database verbinding nodig. (desnoods uit een pool gehaald ja), voert een query uit op de database-server. Die draagt de data over aan php en php spuugt dat uit.

Zonder maatregelen met extra headers wordt dat niet gecacht. Dus waar een opgeslagen afbeelding bij het herladen van de pagina gewoon met een header "304 not changed" kan worden afgedaan, doe je dat proces opnieuw.
Voor 1 pagina is dat prima te overzien.
Maar als het een site betreft die vaak bezocht wordt, laten we zeggen 60 hits per minuut.
Dan heb je het niet over 1 php aanroep per seconde maar 4
Je afbeeldingen gaan elke keer over de lijn, dus meer data verkeer.

Daarnaast maak je heel regelmatig een backup van je database. (of dat doet je hoster.)
Binaire data neemt een hoop ruimte in in de database. Maar deze data is niet erg aan verandering onderhevig. Dus als file op hd had hij een datum gehad, en had een intelligent backup proces die file kunnen herkennen als oud en niet bij elke backup mee zullen pakken.

Het kan wel.
Maar er is ook een hoop als reden om het niet te doen aan te voeren.
eea hangt samen met hoeveel files en hoe druk je site bezocht is
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/01/2014 13:59:55
Quote Anchor link
Binaire data neemt niet zoveel ruimte als je denkt, want dat wordt buiten de tabellen opgeslagen. Een blob veld neemt 4 bytes in beslag.

En natuurlijk heeft het nadelen, maar om nu te stellen dat het not. done is vind ik te ver gaan.
 
Willem vp

Willem vp

11/01/2014 14:20:21
Quote Anchor link
> Zonder maatregelen met extra headers wordt dat niet gecacht.

Als je de images inline in je (dynamisch gegenereerde) HTML opneemt, wordt er ook niet veel gecacht. ;-)
 
Ivo P

Ivo P

11/01/2014 14:35:38
Quote Anchor link
ook daar geldt inderdaad dat het veel handiger is om de data niet in de database maar in een file te hebben staan.

Wel is het eenvoudiger om je hele databoeltje mee te nemen naar een andere server: alles zit dan verpakt in je database en je hebt niet directory's aan files om mee te slepen.

elk nadeel hep soms een voordeel
 
Willem vp

Willem vp

11/01/2014 15:07:52
Quote Anchor link
Het is een beetje een afweging van de situatie. Als je duizenden bestandjes hebt van niet meer dan een paar kilobyte kun je ze beter in een database gooien, omdat anders de toegangstijden via het filesysteem te lang worden. En er zijn situaties waarin je moet kunnen garanderen dat je plaatje en de data in de database in dezelfde transactie worden gewijzigd. Dat is niet goed mogelijk wanneer je het plaatje op een filesystem zet.
 
Joren vh

joren vh

20/01/2014 21:09:05
Quote Anchor link
Bedankt voor jullie antwoorden, sorry dat ik zo laat reageer maar ik zit midden in mijn examen periode en had even gebrek aan tijd om aan deze examenopdracht te werken. Ondertussen heb ik in het weekend de app toch maar even volledig om gegooid en ik upload de images nu naar mijn server ipv naar de database.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.