Ik zit al een aantal dagen te klooien om een plaatje in de postgresql database te krijgen en vervolgens deze weer uit te lezen. In postgresql zijn er volgens de handleiding 2 methoden om er binary data in te stoppen. OID (lo_import) en bytea. Ik heb gekozen voor bytea en krijg deze dus niet voor elkaar.
(ik maak gebruik van pear database access echter heb ik ook gewoon database access geprobeerd met php, echter resulaat is hetzelfde)
plaatje erin stoppen:
...
plaatje eruit halen:
(ik maak gebruik van pear database access echter heb ik ook gewoon database access geprobeerd met php, echter resulaat is hetzelfde)
plaatje erin stoppen:
...
PHP:
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
| function escByteA($binData) { /** * \134 = 92 = backslash, \000 = 00 = NULL, \047 = 39 = Single Quote * * str_replace() replaces the searches array in order. Therefore, we must * process the 'backslash' character first. If we process it last, it'll * replace all the escaped backslashes from the other searches that came * before. */ $search = array(chr(92), chr(0), chr(39)); $replace = array('\\\134', '\\\000', '\\\047'); $binData = str_replace($search, $replace, $binData); return $binData; //echo "<pre>$binData</pre>"; //exit; } ... $contents = ""; $hFile = fopen($uploadfile, "rb"); $fileContents = fread($hFile, $uploadsize); fclose ($hFile); $contents = escByteA($FileContents); // DATABASE INSERT PEAR::setErrorHandling(PEAR_ERROR_DIE, "Aaaaargh! Error: %s"); $db = DB::connect($GLOBAL_DSN); $sql = "insert into organisatie(naam, logo) values(". $db->quote($organisatie) . ",". $db->quote($contents) . ")"; $db->query($sql); |
plaatje eruit halen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| require_once("config.php"); require_once("PEAR.php"); require_once("DB.php"); $organisatie_id = (isset($_GET['organisatie_id'])) ? $_GET['organisatie_id'] : 0; PEAR::setErrorHandling(PEAR_ERROR_DIE, "Aaaaargh! Error: %s"); $db = DB::connect($GLOBAL_DSN); $sql = "select logo from organisatie where organisatie_id = $organisatie_id"; $result = $db->query($sql); $row = $result->fetchRow(); header("Content-Type: image/jpeg"); header("Content-Disposition: inline; filename=$organisatie_id.jpg"); echo stripcslashes($row[0]); ?> |
[ Voor 9% gewijzigd door gorgi_19 op 24-08-2004 09:07 ]