---
title: "Bilder i databas"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/119945-bilder-i-databas"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Jesper2"
published: "2005-01-12T09:42:19.000Z"
updated: "2005-01-13T20:58:18.000Z"
replies: 12
views: 373
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/119945-bilder-i-databas"
---

# Bilder i databas

## #1 — Jesper2, 2005-01-12T09:42Z

Hejsan igen, snubben med problem är tillbaka.
Nu behöver jag hjälp med att skicka in en bild i en databas. Jag vet att de flesta anser att det är bättre att skicka in URL:en i databasen, men jag vill ha bilden i databasen eftersom det underlättar i efterhand =)

Jag kan  i n g e n t i n g  om detta, så jag behöver hjälp från grund och botten med både UPDATE och INSERT INTO. Jag har ganska stor vana av att skicka in vanlig data i databaser så det är inga problem med databasuppkopplingar osv.

Vad behöver jag för fält i databasen, och vilken datatyp?
Hur döper jag om bilderna, kollar maxsize 20kb och att det verkligen är en bild som skickas in? Jag behöver hjälp med allt!

Jag tänkte namnge bilderna efter $\_SESSION\["nick"\], t ex:
$\_SESSION\["nick"\] = "Jesper";
bildens namn = Jesper.jpg

Om ni förstår =)

Tack på förhand!
// Jesper Ahlin - <https://www.jesperahlin.tk>

Permalänk: https://www.webforum.nu/p/119945

## #2 — Bjuufaren, 2005-01-12T10:02Z

Här är en bra början..
<http://www.phpbuilder.com/columns/florian19991014.php3>

Jag gjorde något liknande för ett par veckor sdan och har för mig att det blev något strul, just nu kommer jag inte ihåg vad.. det löste sig till slut i alla fall. Säg till om det blir problem så kan försöka leta upp det var..

Permalänk: https://www.webforum.nu/p/1525727

## #3 — Jesper2, 2005-01-12T10:14Z

Tackar tackar! Mycket fin länk, men jag körde fast på samma ställe som jag kört fast på förut:

```php
   $result=MYSQL_QUERY("INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) ".
        "VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");
```

Vad skråen är det där? Behöver man verkligen så många fält för att ladda upp en bild..? Jag är nybörjare inom PHP så jag behöver lite mer nogrann förklaring om det är möjligt :/

Tack så mycket =)

Permalänk: https://www.webforum.nu/p/1525734

## #4 — Bjuufaren, 2005-01-12T10:42Z

Första fältet (description) behövs inte, men vill du att dina besökare ska kunna se bilderna är de andra fälten nog nödvändiga.

När en fil (vilken som helst) skickas från webbservern till webbläsaren är den första informationen som kommer något i den här stilen:

HTTP/1.1 200 OK
Server: Apache 2.0.48 (Win32)
Date: Saturday, 25-Dec-04 02:12:04 GMT
Content-length: 9422
Content-type: text/html

De två sista raderna här är den informationen som sparas i fälten filesize och filetype (fast det kanske står image/gif eller något annat beroende på vilken filtyp det är). Det behövs för att webbläsaren ska vet vilken typ av fil den tar emot. Saknas filetype (och filesize) kommer bilden antagligen bara att visas som en massa tecken.

Permalänk: https://www.webforum.nu/p/1525747

## #5 — Jesper2, 2005-01-12T13:51Z

OK, nu börjar jag förstå lite grann här. Har lyckats skicka upp bilder till servern =)

Men ett par frågor återstår:
Hur kollar jag så att det verkligen är en bild som skickas upp?
Hur begränsar jag maxfilesize?

Permalänk: https://www.webforum.nu/p/1525834

## #6 — aasah, 2005-01-12T14:26Z

> **Jesper2 skrev:**
>
> ...Hur kollar jag så att det verkligen är en bild som skickas upp?
> Hur begränsar jag maxfilesize?

Du borde kunna begränsa antalet filändelser som du godtar. Om någon skickar ett worddokument med ändelsen jpg tex så blir det nog visserligen ingen snygg bild, men dokumentet blir inte läsbart heller för servern tror att det är en bild.

Filstorleken får du kolla innan uppladdningen, och om den överstiger det du bestämt som max, så skickar du felmeddelande, annars sker uppladdning.

Permalänk: https://www.webforum.nu/p/1525854

## #7 — Jesper2, 2005-01-12T16:48Z

> **aasah skrev:**
>
> > **Jesper2 skrev:**
> >
> > ...Hur kollar jag så att det verkligen är en bild som skickas upp?
> > Hur begränsar jag maxfilesize?
>
> Du borde kunna begränsa antalet filändelser som du godtar. Om någon skickar ett worddokument med ändelsen jpg tex så blir det nog visserligen ingen snygg bild, men dokumentet blir inte läsbart heller för servern tror att det är en bild.
> 
> Filstorleken får du kolla innan uppladdningen, och om den överstiger det du bestämt som max, så skickar du felmeddelande, annars sker uppladdning.

Ok, låter vettigt. Men hur?

Permalänk: https://www.webforum.nu/p/1525940

## #8 — aasah, 2005-01-12T20:22Z

> **Jesper2 skrev:**
>
> > **aasah skrev:**
> >
> > Du borde kunna begränsa antalet filändelser som du godtar. Om någon skickar ett worddokument med ändelsen jpg tex så blir det nog visserligen ingen snygg bild, men dokumentet blir inte läsbart heller för servern tror att det är en bild.
> > 
> > Filstorleken får du kolla innan uppladdningen, och om den överstiger det du bestämt som max, så skickar du felmeddelande, annars sker uppladdning.
>
> Ok, låter vettigt. Men hur?

Om du har kommit så långt att du kan skriva 

```php
$result=MYSQL_QUERY("INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) ".
        "VALUES  ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");
```

 så har du ju såväl filnamnet som storleken i två variabler. Innan du lägger in dem i ovanstående kodnutt så kollar du värdena. 

Du hittar filändelsen med reguljära uttryck, (eller möjligen med substring).

Permalänk: https://www.webforum.nu/p/1526093

## #9 — Jesper2, 2005-01-12T21:03Z

Nu har jag lyckats lösa alla problem utom ett:
Hur gör jag för att man ska skickas tillbaka om man inte har en bildfil? Jag förstår inte vad ni skriver, ni får vara mkt mer detaljerade tyvärr :/

```php
elseif($_FILES['form_data']['type'] != "image"){
	session_register("error");
	$error = "<span style='color: red'>Det måste vara en BILD du laddar upp.</span><br><br>";
	$_SESSION["error"] = $error;
	header("Location: ../foto.php?user=$nick");
}
```

Det här fungerar inte iallafall, men bättre än så kan jag inte åstadkomma utan hjälp :/

Tack så jättemycket för alla kanonsvar, det har hjälpt jättemycket!

Permalänk: https://www.webforum.nu/p/1526122

## #10 — aasah, 2005-01-12T21:18Z

> **Jesper2 skrev:**
>
> Nu har jag lyckats lösa alla problem utom ett:
> Hur gör jag för att man ska skickas tillbaka om man inte har en bildfil? Jag förstår inte vad ni skriver, ni får vara mkt mer detaljerade tyvärr :/
> 
>
>
> ```php
> elseif($_FILES['form_data']['type'] != "image"){
> 	session_register("error");
> 	$error = "<span style='color: red'>Det måste vara en BILD du laddar upp.</span><br><br>";
> 	$_SESSION["error"] = $error;
> 	header("Location: ../foto.php?user=$nick");
> }
> ```

Tillbaka vart? Till uppladdningsformuläret? :q
Ligger det i egen fil eller i samma som din omhändertagande kod? :q

OM du vill till uppladdningsformuläret som ligger i egen fil (form.php) så ändra din header till:

header ("Location: form.php"); //Eller hur nu URL:n ser ut när sidan laddas första gången.

OM du vill till uppladdningsformuläret som ligger i samma fil, och du hamnar i den omhändertagande koden om någon viss GET eller POST-variabel är satt, tex 'ladda', ändra din header till hur den ser ut när sidan laddas första gången, men lägg till raden:
unset($\_POST\['ladda'\]); före header-raden, alltså:

unset($\_POST\['ladda'\]);
header ("Location: photo.php"); //Eller hur nu URL:n ser ut när sidan laddas första gången.

(Byt POST mot GET om du använder GET i formen istället)

Detta tar dig till

Permalänk: https://www.webforum.nu/p/1526128

## #11 — Jesper2, 2005-01-13T13:51Z

Tack tack, men jag vet hur man gör för att komma tillbaka ;)
Det jag behöver hjälp med är att kontrollera så att filen verkligen är en  b i l d.

Permalänk: https://www.webforum.nu/p/1526441

## #12 — UrMe, 2005-01-13T14:00Z

Nåt sånt här kanske?

```php
if (($uploadfile_type != "image/gif") && ($uploadfile_type != "image/jpeg") && ($uploadfile_type != "image/pjpeg"))
{ 

$error_msg .= "Your file is not a web graphic (GIF/JPG)"; 
}
```

Permalänk: https://www.webforum.nu/p/1526446

## #13 — Jesper2, 2005-01-13T20:58Z

Hm, jag har provat en liknande sak, nämligen det här:

```php
elseif($_FILES['form_data']['type'] != "image/jpeg"){
```

Men då går inte ens bilder igenom :/

$\_FILES\['form_data'\]\['name'\] och allt annat stämmer kanon så det är inte fel på själva uppladdningen. Det är just filtypen som felar :/

Permalänk: https://www.webforum.nu/p/1526680

---

Tråden på webben: https://www.webforum.nu/amne/php/119945-bilder-i-databas
