Gå til innhold

Bilder og mysql blob


Anbefalte innlegg

Det hadde vært koslig om noen vil forklare litt om lagring av bilder i mysql blob, og hvordan man henter de ut igjen da. Jeg har klart å lagre bilder i blob, men jeg har problemer med å hente ut. Hvordan gjør man egentlig det?

Lenke til kommentar
Videoannonse
Annonse
Om det er lurt er en annen ting, de fleste lagrer kun filnavnet i db og legger filen i en egen mappe på serveren. Dette skal gi bedre ytelse.

Problemet med å legge bilder i MySQL er at selv om du velger et felt som har plass til mage tegn - så er det en sperre i MySQL som er på 16MB som må endres - og det er ikke alle webhoteller som vil endre denne. Så store bilder kan bli et problem.

Lenke til kommentar

For å hente ut bildene igjen må lage en egen php-side. La oss si vi kaller den bilde.php. Denne filen sjekker variabelen id som da sier hvilket bilde som skal hentes ut av databasen.

 

I bilde.php henter du blob'en og kan enkelt og greit kjøre en:

<?php
$db = mysql_connect(bla bla...);
mysql_select_db("databasenmin");
$res = mysql_query("SELECT bildeblobben_min FROM tabellen_min WHERE id=" . $_GET['id']);
if ($mysqlpost = mysql_fetch_array($res)) {
   echo $mysqlpost['bildeblobben_min'];
}
?>

 

Som HTML-kode der bildet skal vises skriver du:

<IMG SRC="bilde.php?id=5">

 

 

 

Edit:

For lagring av bildet finnes $_FILES arrayet. Dersom POST-tagen på siden der du kan sende inn bildet heter bilde (<INPUT TYPE=file NAME=bildet_mitt>), så finner du bildet ved bruk av $_FILES['bildet_mitt'] arrayet. Her kan du hente ut temporært filnavn og størrelse vha. $_FILES['bildet_mitt']['size'] of $_FILES['bildet_mitt']['tmp_name'] så da er det bare å lese inn fila og lagre den som en blob

Endret av RottePostei
Lenke til kommentar
uten at jeg har prøvd det, så vil jeg tro at du trenger en header("Content-type: image/jpeg"); for eksempel?

Funker fint i Opera og IE iallefall

 

Edit:

Og Mozilla

Du mener uten å sette header image?

Kan du sjekke hvilken header serveren din setter på det bildet (Content-Type)?

http://www.delorie.com/web/headers.html

 

Uansett så burde header settes for å passe på at det ikke skjer noen feil ved visning av bilder.

Lenke til kommentar
Du mener uten å sette header image?

Kan du sjekke hvilken header serveren din setter på det bildet (Content-Type)?

http://www.delorie.com/web/headers.html

 

Uansett så burde header settes for å passe på at det ikke skjer noen feil ved visning av bilder.

Er enig i den. Poenget er at jeg var lat og derfor ikke gjorde det og så funka det allikevel.

 

Skal sjekke hvilke headere den sender.

Lenke til kommentar

Jeg ble nysgjerrig på dette med bilder i mysql og prøver å lage en søkeside hvor man velger bilde_id og får fram bilde.

 

Form'en ser slik ut:

 

<form action="hentbilde.php" method="POST">bildenr:

<input type="hidden" name="hva" value="bildenr">

<select name="sok">

<option value="1" label="1">1</option>

<option value="2" label="2">2</option>

<option value="2" label="3">3</option>

</select><input name="send" value="Search" type="submit">

</form>

 

scriptet ser slik ut:

 

<?php

extract($_GET);

if(isset($id)) {

$db = mysql_connect("localhost","brukernavn","passord");

mysql_select_db ("prosjekt");

 

MYSQL_CONNECT($mysql_host,$mysql_user,$mysql_pass);

mysql_select_db($mysql_db);

$query = "select id, bin_data,filetype from tbl_bilde where id = $id";

$result = @MYSQL_QUERY($query);

$data = @MYSQL_RESULT($result,0,"bin_data");

$type = @MYSQL_RESULT($result,0,"filetype");

Header("Content-type: $type");

echo $data;

 

};

?>

 

Hvordan skal jeg få dette scriptet til å hente ut det man velger fra form'en?

Lenke til kommentar

$id = mysql_escape_string($_POST[hva]);

 

... og pass på at du lagrer rett "filetype" i databasen, dvs pass på at du får ut riktig header, her er noe som ser ut som en rimelig komplett liste:

 

ftp://ftp.isi.edu/in-notes/iana/assignmen...pes/media-types

 

EDIT: her er en link til:

http://ppewww.ph.gla.ac.uk/~flavell/www/content-type.html

Endret av Torbjørn
Lenke til kommentar
  • 3 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...