blob image uitlezen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Developer Low-code

Dit ga je doen Low-code ontwikkeling van software voor landelijk bekende organisaties; Opleveren van mooie eindproducten, middels de Agile methodiek; Samenwerken in een team van 10 collega's; Direct contact met de eindklant over de gewenste oplossingen. Hier ga je werken Als Developer kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet discreet en veilig verwerkt worden. De processen die hierbij horen worden door het IT team vormgegeven. De

Bekijk vacature »

Full Stack .NET Developer C# ASP.NET

Samengevat: Deze werkgever is gespecialiseerd in het op afstand bewaken en besturen van machines en processen. Ben jij een ervaren Full Stack .NET Developer? Heb je ervaring met C# en ASP.NET? Vaste baan: .Net Developer C# ASP.NET HBO €3.300 - €4.500 Deze werkgever is een snel groeiende onderneming gespecialiseerd in het op afstand bewaken en besturen van machines en processen, IoT (Internet of Things). Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Wil jij bij de top specialisten horen? Ben jij op zoek naar een

Bekijk vacature »

PHP developer

Functie omschrijving Voor een klein bedrijf in de buurt van Nieuwegein zijn wij per direct op zoek naar een talentvolle PHP developer. Er wordt veel ruimte geboden voor eigen initiateven, waardoor je een mooie stempel kan drukken op jouw eigen werkzaamheden (zowel operationeel als strategisch). Het bedrijf heeft middels externe programmeurs een multimedia platform ontwikkeld, maar willen geleidelijk de ontwikkeling naar binnen halen. Om die reden zoeken zij een communicatieve interne PHP developer die graag meebouwt aan het succesvolle product. Je gaat de volgende werkzaamheden verrichten: Platform beheren en programmeren (PHP, MySQL, JQuery, Javascript, XML & HTML); Communicatie en aansturing

Bekijk vacature »

Java Developer

Dit ga je doen Ontwerpen en bouwen van nieuwe functionaliteiten binnen de complexe omgeving; Proactief de processen kwalitatief en efficient inrichten; Opzetten van Unit Tests; Code Reviews; Regie nemen voor innovatieve projecten; Landschap beheren en de bijbehorende ketens hierbij in het oog houden. Hier ga je werken De organisatie is actief binnen de financiele branche en heeft een IT afdeling van circa 450 man. De organisatie voorziet de maatschappij binnen de financiele dienstverlening en is gedurende de jaren een onmisbare schakel geworden. Het is een high profile organisatie waar ze veel te maken hebben met veranderingen voortkomend uit maatschappelijke ontwikkelingen,

Bekijk vacature »

Junior Software Developer (HBO / WO)

Functie omschrijving Voor een leuke opdrachtgever zijn wij op zoek naar een Junior Software Developer! Sta jij aan het begin van je carrière en heb je net je HBO of WO-diploma in de richting van ICT of Techniek mogen ontvangen? En heb jij grote affiniteit met software development? Dan hebben wij bij Jelling IT Professionals de perfecte opdrachtgever in de omgeving van Hoofddorp. Binnen deze functie vervul je een onsite learning programma waarbij je aan de slag gaat met PHP en Laravel. Hierbij ben je voornamelijk werkzaam op verschillende klantlocaties en is het jouw taak om hun wensen en eisen

Bekijk vacature »

Full stack developer Node.js

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

Senior Full Stack developer

Bedrijfsomschrijving tbd Functieomschrijving Full Stack Java Development bij Randstad Groep Nederland (HQ) Er is een vacature in het Corporate Client Solutions (CCS) team. Dit team is met een ander team net begonnen aan het project ‘Grip op Inhuur’. Het doel van dit project is de tevredenheid van onze leveranciers te verhogen en de efficiëntie van onze administratie te verbeteren. Onderdeel daarvan is een ‘Mijn-omgeving’ voor ZZP’ers en leveranciers. Naast dit nieuwe project werkt het team ook aan het onderhoud en verbeteren van een digitaal vacature management systeem waarmee dagelijks vele vacatures worden voorzien. Het team ontwikkelt zo veel mogelijk zelf

Bekijk vacature »

.NET developer

Functie As a .NET developer you start in a driven and diverse development team. Your team consists of 16 IT professionals, including 7 software engineers. Because your new employer is internationally active, there are also international IT professionals working in the IT department. As a result, the official language is English. As a team you are responsible for a new Cloud Native product. This product runs entirely in Azure with a Progress Database and various Azure Functions. In addition, this product has a JS front-end, a REST API system and a layer in C # .NET. The idea is therefore

Bekijk vacature »

Senior pega developer

You work on software that makes colleagues and customers happy! Thanks to your IT skills, De Mandemakers Groep really makes a difference for its customers. Do coding, testing and deployments make your heart beat faster? Then apply today as Senior Pega Developer at De Mandemakers Groep! Wat ga je doen? The job title gives it away: You will be developing Pega software. This ranges from technical design, coding and testing to test automation, deployments and bug fixing. Your goal is to continuously improve our systems so that colleagues can work efficiently and customers receive optimal service. You don't have to

Bekijk vacature »

Senior Lead Front End Developer

Functieomschrijving Voor Stichting Waternet zijn wij op zoek naar een senior Lead Front End Developer. Binnen het DevOps team Online zijn we op zoek naar een Senior Lead Front End developer met kennis van toegankelijkheid. Deze developer zal zich bezighouden met development van webpaginas die in verbinding staan met systemen uit het back office. Taken Ontwerpen, ontwikkelen, implementeren, documenteren en beheren van webapplicaties in een Azure-omgeving Debuggen, analyseren en oplossen van problemen in de OTAPomgevingen Je participeert in het DevOpsTeam Online voor het verder uitwerken en implementeren van gebruikerswensen Je bent betrokken bij toegankelijkheid audits en het implementeren van WCAG

Bekijk vacature »

Senior .NET developer

Functie As a Senior .NET developer you will work in our Research & development team. Our team consists of 17 colleagues! We are currently busy setting up a completely new architecture for a new product. We use VS2022 and .NET 6.0 for our new product. Your function is therefore mainly backend oriented. Since we develop measuring equipment for the chemical industry, it is also very important to develop high-quality software for its control. You are also responsible for designing, implementing and testing new features. For this position its also very important to ensure future-proof and sustainable architecture. Eisen - A

Bekijk vacature »

Ervaren Software Developer

Functie omschrijving Ben jij een ervaren Software Developer, en heb je ervaring met technieken zoals C#, MS Access & SQL? Vind jij het leuk om maatwerk software te ontwikkelen voor klanten in een specifieke branche? Dan is dit de baan voor jou! Als ontwikkelaar ben jij samen met een team van 12 collega’s verantwoordelijk voor het bouwen van nieuwe functionaliteiten en het uitbreiden van de core applicatie. Belangrijk is dat je ervaring hebt met C# en MS Access. Je bent flexibel en klantvriendelijk ingesteld, omdat het belangrijk is om de klanten zo goed mogelijk van dienst te kunnen zijn. Thuiswerken

Bekijk vacature »

Java Full Stack Developer

Java Full Stack developer What makes Cognizant a unique place to work? The combination of rapid growth and an international and innovative environment! This is creating a lot of opportunities for people like YOU — people with an entrepreneurial spirit who want to make a difference in this world. At Cognizant, together with your colleagues from all around the world, you will collaborate on creating solutions for the world's leading companies and help them become more flexible, more innovative and successful. And this is your chance to be part of the success story: we are looking for a (Senior) Java

Bekijk vacature »

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

PHP Developer - medior functie

Functieomschrijving Ben jij innovatief en wil jij je kennis graag delen met jouw nieuwe collega's? Lees dan snel verder! Voor een leuke opdrachtgever in de omgeving van Roosendaal zoeken wij een Symfony developer. Of je nou junior, medior of senior bent, je krijgt hier alle vrijheid en verantwoordelijkheid om jouw eigen loopbaan te ontwikkelen. Je gaat je hier bezig houden met en inspelen op de actualiteiten van jouw vakgebied. Techstack: Symfony, PHP, mySQL. Kennis van Svelte is helemaal mooi meegenomen. Bedrijfsprofiel Al sinds '99 is dit webbureau actief. De kernwaarden binnen het bedrijf zijn integer, dienstbaar en deskundig. Je komt

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

22/12/2024 02:18:29
 
- 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.