Hallo mensen,
Ik ben bezig met een phpscriptje dat binaire bestanden in een BLOB-field kan zetten en deze vervolgens ook weer uit kan lezen.
Nu denk ik dat het uploaden wel succesvol lukt maar bij het uitlezen gaat het mis.
Als ik plaatjes uitlees dan krijg ik het beruchte rode kruisje en flashbestanden blijft hij oneindig laden. Hij ziet dus wel wat voor type bestand het is maar ergens in de bestandsinhoud gaat het fout.
Voor het uploaden gebruik ik ongv. het volgende script:
De fileinput heet in het formulier 'attach'
Om het geheel weer te downloaden heb ik dit in elkaar geknutseld:
De tabel 'bijlage' bevat een aantal velden waaronder:
id smallint(6)
filename varchar(120)
filetype varchar(120)
filesize int(40)
attachment blob
De blob wordt wel gevuld want als ik een bestand van +- 10kb in de database zet dan neemt de tabel ook ongeveer zoveel ruimte in beslag.
Ik heb al meerdere variaties op het bovenstaande geprobeerd en mijn instinct zegt mij dat het iets met het toevogen en verwijderen van slashes te maken heeft. Maargoed , dat kan ik natuurlijk ook gruwelijk mis hebben...
sorry voor layout-herindeling
Ik ben bezig met een phpscriptje dat binaire bestanden in een BLOB-field kan zetten en deze vervolgens ook weer uit kan lezen.
Nu denk ik dat het uploaden wel succesvol lukt maar bij het uitlezen gaat het mis.
Als ik plaatjes uitlees dan krijg ik het beruchte rode kruisje en flashbestanden blijft hij oneindig laden. Hij ziet dus wel wat voor type bestand het is maar ergens in de bestandsinhoud gaat het fout.
Voor het uploaden gebruik ik ongv. het volgende script:
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
31
32
33
| <? if($_FILES[attach][tmp_name] != "none" && $_FILES[attach][tmp_name] != "") { $fp = @fopen($_FILES[attach][tmp_name],"r"); if($fp){ $attach_size = filesize($_FILES[attach][tmp_name]); $content = fread($fp,$attach_size); fclose($fp); $max_attach = 1000000; if($attach_size > $max_attach) { echo $header; zeg($txt[attachtegroot],true); echo $footer; exit; } $db->query("INSERT INTO $table_bijlage VALUES('', '".$_FILES[attach][name]."','".$_FILES[attach][type]."','".$attach_size."','".addslashes($content)."')"); } else { echo $header; zeg("Error: Kan bestand niet openen",true); echo $footer; exit; } } ?> |
De fileinput heet in het formulier 'attach'
Om het geheel weer te downloaden heb ik dit in elkaar geknutseld:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
| <? $query = $db->query("SELECT * FROM bijlage WHERE id='$id'"); $file = $db->fetch_array($query); $file[attachment] = stripslashes($file[attachment]); header("Content-disposition: filename=$file[filename]"); header("Content-Length: ". strlen($file[attachment])); header("Content-type: $file[filetype]"); header("Pragma: no-cache"); header("Expires: 0"); echo $file[attachment]; ?> |
De tabel 'bijlage' bevat een aantal velden waaronder:
id smallint(6)
filename varchar(120)
filetype varchar(120)
filesize int(40)
attachment blob
De blob wordt wel gevuld want als ik een bestand van +- 10kb in de database zet dan neemt de tabel ook ongeveer zoveel ruimte in beslag.
Ik heb al meerdere variaties op het bovenstaande geprobeerd en mijn instinct zegt mij dat het iets met het toevogen en verwijderen van slashes te maken heeft. Maargoed , dat kan ik natuurlijk ook gruwelijk mis hebben...
sorry voor layout-herindeling