blob image uitlezen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior .NET Ontwikkelaar

In het kort Als .NET ontwikkelaar ga je binnen onze business unit Transport en Logistiek aan de slag complexe maatwerk software voor bedrijf kritische systemen binnen de technische automatisering. Denk bijvoorbeeld een IoT-oplossing voor de logistieke sector waarbij we van ruim 200.000 machines de telemetrie en events verwerken. We zijn actief in de distributielogistiek, havenlogistiek en productielogistiek. Naast C# en .NET Core maken we ook gebruik van Azure technologie. En als trotse Microsoft Gold Partner leren we graag van en met jou. Wil jij jezelf blijven ontwikkelen binnen de technische automatisering met .NET, dan gaan we deze uitdaging graag met

Bekijk vacature »

Medior Java developer (fullstack)

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 »

Remote - Front-end Angular developer

Functie The IT team currently consists of the IT Manager, 2 back-end developers, 1 full-stack developer, 1 designer, and a DevOps engineer. They are currently looking for an experienced Front-end developer who will work autonomously and in a disciplined manner, being the only developer working on their Front-end applications at the start. They do have the ambition to find a second developer soon, who you will then be able to supervise. You will be working on the further development of their existing UI in Angular. But also developing a mobile app. They place great value on User Experience and opt

Bekijk vacature »

Junior PHP Developer

Functieomschrijving Junior PHP Developer gezocht! Voor een opdrachtgever in de regio Gelderland zijn wij op zoek naar een Junior PHP Developer die onderdeel gaat worden van het ontwikkelingsteam van deze organisatie. In deze functie ga jij aan de slag met het schrijven van software voor de aansturing van en het managen van windparken en bijbehorende onderdelen. Hiernaast ga jij je bezighouden met het ontwikkelen, testen en onderhouden van diverse webapplicaties. Het team waarin je komt te werken bestaat uit 3 developers, hierdoor krijg je veel verantwoordelijkheid en de kans om jezelf verder te ontwikkelen. Er wordt echter wel van je

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Als developer bouw je in DevOps teams aan enterprise applicaties, nieuwe IOT, Chatbots of AI oplossingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren in dit vakgebied. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij vorig jaar Microsoft Partner of the year geworden.

Bekijk vacature »

Front-end React developer

Functie Het frontend team bestaat momenteel uit 4 dedicated front-enders en is hard aan het groeien! Ook werken er diverse designers waar je veel mee schakelt. Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren, jij bent hierin de schakel tussen de eindgebruiker en de slimme backend. Je werkt in het frontend team samen met de backend teams en product owners om te zorgen dat onze applicaties een fijne gebruikerservaring opleveren. Ze werken o.a. met: React, Atomic design, Styled components, JavaScript / TypeScript, NPM, Webpack Blade templates, HTML, SCSS, Git flow. Eisen • HBO

Bekijk vacature »

Full stack developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Junior Low-code ontwikkelaar gezocht omgeving Arnh

Bedrijfsomschrijving Wij zijn een dynamisch IT-bedrijf dat zich richt op het stroomlijnen van bedrijfsprocessen en het creëren van ondersteunende applicaties. Onze kracht ligt in het combineren van zakelijk inzicht met IT-expertise via gestroomlijnde procesontwerpen en wendbare applicatieontwikkeling met behulp van Low-code technologieën. Als jonge professional krijg je de kans om samen te werken met een team van 15 deskundige collega's, verspreid over nationale en internationale locaties. We bieden je een leerzame omgeving waar je je vaardigheden kunt ontwikkelen en groeien in je rol als Low-code ontwikkelaar. Word jij onze nieuwe Junior Low-code Ontwikkelaar (OutSystems)? Versterk ons team en draag bij

Bekijk vacature »

Front end developer

Functie Jij als ervaren Front end developer bent een expert het gebied van Javascript en React. Je wordt onderdeel van een multidisciplinair team bestaande uit een PO, twee Front end developers, een DevOps/Back end developer, een UX/UI designer en een projectmanager. Verder is er iemand verantwoordelijk voor de HR en is de algemeen directeur nauw betrokken bij alle projecten. Dagelijks hou jij je bezig met de verschillende projecten die zijn opgenomen in de sprint. Daarnaast denk je mee over mogelijke oplossingen om de behoefte van de klant op de beste manier in te vullen. Verder spar jij intern met collega’s

Bekijk vacature »

Senior Front end developer Automotive Angular

Functie Als Senior Front end developer kom je te werken in een team van 11 developers. 9 van de 11 focussen zich op back end, welke is geschreven in Java, en 2 op de front end waarbij er gebruik wordt gemaakt van Typescript en Angular. De focus in deze rol ligt op 2 aspecten; doorontwikkeling van de eigen tooling en gebruik van de tooling t.b.v. klantprojecten. Momenteel zijn ze in de afrondende fase van een project waarbij ze het gehele verkoopproces van nieuwe auto’s anders ingeregeld hebben voor een grote dealer in Nederland. Waarbij Auto’s normaliter pas verkocht werden in

Bekijk vacature »

Lead Webdeveloper

As Lead Web Developer at KUBUS you are responsible for the implementation design of requirements and the software architecture of the web application and services of BIMcollab. In your role as lead developer you will naturally search for the optimum between the required implementation time, the performance of the application and a fast go-to-market of features, in line with our automated test and release train. Together with the other senior developers in your team you monitor the architecture of the application and you advise the product owner about necessary refactoring to improve the maintainability of the platform. Our development team

Bekijk vacature »

Medior Front-end Developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als Medior Front-end Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel

Bekijk vacature »

PHP developer - Digital Agency

Functie Het team telt momenteel 20 collega’s, bestaande uit developers (front- en backend) en het operations team, waaronder ook het management en twee scrum masters vallen. Ze zijn op zoek naar een PHP developer die in staat is zelfstandig te werken. Je komt te werken in één van de drie scrumteams en gaat aan de slag met een project voor de klant. Het fijne hieraan is dat je wel afwisseling hebt qua werk, maar tegelijkertijd doorlopend werkt voor bestaande klanten. Hierdoor krijg je ook de kans om echt de diepte in te gaan en innovatieve technische oplossingen neer te zetten.

Bekijk vacature »

PHP Developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

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 »
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

27/05/2026 07:06:04
 
- 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.