Foto downloaden uit database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wouter van

Wouter van

09/11/2014 14:14:40
Quote Anchor link
Hallo allemaal,

Ik probeer al een tijdje om een foto te downloaden uit de databse.

Als ik de foto download dan laat hij alleen een klein gedeelte van de foto zien.

Is er iemand die weet hoe dit opgelost kan worden ?

Dit is het script.

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
<?php

mysql_connect ("x","x","x")or die (mysql_error());
mysql_select_db("x")or die (mysql_error());
$opdrachtid= ($_GET ['id']);

$query = mysql_query("select * FROM opdrachten_gegevens WHERE Opdracht_ID = '$opdrachtid'");
$row = mysql_fetch_assoc($query);
$test = $row["Foto"];
$naam = $row["Bestandsnaam"];
header("Content-Type: $naam");
header("Content-Disposition: attachment; filename=\"$naam\"");

print $test;

?>


gr
 
PHP hulp

PHP hulp

08/11/2024 17:03:12
 
Willem vp

Willem vp

09/11/2014 15:20:51
Quote Anchor link
Moet het content-type in regel 11 niet iets zijn als image/jpeg of image/png?
 
Wouter van

Wouter van

09/11/2014 15:43:08
Quote Anchor link
Ja, dat klopt. $naam in regel 11 staat gelijk aan image/jpeg.
 
Willem vp

Willem vp

09/11/2014 16:36:43
Quote Anchor link
> $naam in regel 11 staat gelijk aan image/jpeg.

Het feit dat $naam uit het veld 'bestandsnaam' komt vind ik dan op zijn minst verwarrend. En die verwarring wordt niet weggenomen doordat je in regel 12 $naam ook weer gebruikt als filename. ;-)

Weet je zeker dat het plaatje correct is opgeslagen in de database? En als je $test niet naar het scherm schrijft maar naar een bestand op je server, krijg je dan wel een goed plaatje?
 
Wouter van

Wouter van

09/11/2014 17:24:20
Quote Anchor link
Dat is inderdaad verwarrend. ik haalde die waarde uit een verkeerd veld die haal ik nu uit bestandstype ipv (bestandsnaam), maar het werkt nog steeds niet. Ik krijg nog steeds een heel klein gedeelte van de foto te zien.


Het plaatje is opgeslagen als een blob bestand in de database.
 
Willem vp

Willem vp

09/11/2014 17:46:00
Quote Anchor link
> Het plaatje is opgeslagen als een blob bestand in de database

Daar ging ik inderdaad vanuit. ;-) Maar kan het zijn dat er bij het opslaan iets mis is gegaan waardoor het plaatje is afgekapt?
 
Wouter van

Wouter van

09/11/2014 18:06:04
Quote Anchor link
nee volgens mij niet want hij doet dit bij ieder plaatje.
 
Willem vp

Willem vp

09/11/2014 20:18:26
Quote Anchor link
Hoe groot zijn de plaatjes? In een BLOB kun je maximaal 64 kilobyte opslaan. Dat is best weinig voor een plaatje. ;-)

Maak er eens een MEDIUMBLOB van; daar kan 16 MB in. Als dat ook niet genoeg is, zou je nog een LONGBLOB (max 4 GB) kunnen overwegen. Uiteraard moet je dan wel je plaatjes opnieuw in de database laden.
 
Obelix Idefix

Obelix Idefix

09/11/2014 22:13:33
Quote Anchor link
Wouter van op 09/11/2014 17:24:20:
Het plaatje is opgeslagen als een blob bestand in de database.

Waarom sla je plaatjes op in een database? Sla ze, buiten de root eventueel, op en roep ze op via het pad/bestandsnaam (vanuit database).
 
Willem vp

Willem vp

09/11/2014 22:47:15
Quote Anchor link
> Waarom sla je plaatjes op in een database?

Er kunnen verschillende redenen zijn om dat te doen.

- Als je veel kleine plaatjes hebt, is een database vaak efficiënter dan een file system.
- Een database maakt transacties en referentiële integriteit eenvoudiger, wanneer het belangrijk is dat de plaatjes en de metadata overeenkomen.
- Ook wanneer plaatjes vaak wijzigen (elke xx seconden) kan het handig zijn om ze in een database te zetten; bij een file system is de kans dan groter dat de webserver een leeg plaatje stuurt als net op dat moment het bestand wordt overschreven.
- Als meerdere mensen toegang hebben tot de server, is het eenvoudiger om permissies op de bestanden te regelen als ze in een database zitten.
- Er hoeft geen aparte backup te worden gemaakt van de plaatjes; die worden meteen met de database gebackupt.
- Als je meerdere servers hebt, is het eenvoudiger de plaatjes te repliceren naar de andere servers. Ook wanneer je geen gerepliceerde database hebt kun je op die manier de bestanden beschikbaar maken op andere servers zonder dat je met file sharing hoeft te gaan werken.

Er zijn overigens net zoveel redenen om plaatjes níet in een database te zetten. Of het voordelen heeft, moet je per geval bekijken.
Gewijzigd op 09/11/2014 22:59:16 door Willem vp
 
Wouter van

Wouter van

09/11/2014 22:59:20
Quote Anchor link
dit was de oplossing!. ik heb het veld blob veranderd naar mediumblob, toen de foto opnieuw ge-upload en klaar!

Bedankt voor de hulp!

Gr Wouter
 



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.