/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
upload af billeder til mysql
Fra : Soffer


Dato : 06-08-02 13:00

Hej midt i sommervarmen

Jeg er lidt ny i php og har kæmpet med et problem som jeg ikke har kunnet
finde svar på andre steder.

Jeg ønsker at kunne uploade billeder til en nyhedsside sammen med tekst. Det
er lykkedes mig at uploade alt undtagen de binære data til billedet. Det
eneste der bliver lagt i databasen (Mysql) er nogle få linjer (compilerede).
Hvad gør jeg forkert.

Tabellen i min mysql er selvfølgelig en blobe. Min koden kunne jeg vise her,
men det nemmeste er sikkert om nogen kan henvise til en grundig tutorial.

På forhånd tak.

Soffer



 
 
Christian Joergensen (06-08-2002)
Kommentar
Fra : Christian Joergensen


Dato : 06-08-02 13:18

On Tue, 06 Aug 2002 13:59:58 +0200, Soffer wrote:

> Jeg ønsker at kunne uploade billeder til en nyhedsside sammen med tekst. Det
> er lykkedes mig at uploade alt undtagen de binære data til billedet. Det
> eneste der bliver lagt i databasen (Mysql) er nogle få linjer (compilerede).
> Hvad gør jeg forkert.

_Aldrig_ binære data i en database. Lad istedet billedet ligge et sted på
dit filsystem og kald det fx. nyhed_ID.jpg eller lign (ID erstattes
selvfølgelig af det aktuelle nyheds id).

--
Christian Jørgensen | The difference between theory and practice is that in
http://www.razor.dk | theory there is no difference between theory and
| practice, but in practice there is.


Soffer (06-08-2002)
Kommentar
Fra : Soffer


Dato : 06-08-02 16:04

>
> _Aldrig_ binære data i en database. Lad istedet billedet ligge et sted på
> dit filsystem og kald det fx. nyhed_ID.jpg eller lign (ID erstattes
> selvfølgelig af det aktuelle nyheds id).

Ja jo, jeg forstår, men er ikke en ulempe når sitet skal vedligeholdes? Jeg
tænker på uaktuelle billeder osv.

Soffer



Bo Rattenborg (06-08-2002)
Kommentar
Fra : Bo Rattenborg


Dato : 06-08-02 16:59

Så kan du jo køre en rutine der tjekker dit billedebib. for uaktuelle
billeder.


Bo



Troels Arvin (06-08-2002)
Kommentar
Fra : Troels Arvin


Dato : 06-08-02 18:00

On Tue, 06 Aug 2002 14:17:38 +0200, Christian Joergensen wrote:

> _Aldrig_ binære data i en database.
Sikke noget vrøvl. At outputte billeddata fra et databasesystem går
naturligvis langsommere og er mere hukommelseskrævende end at sende en
fil i hovedet på folk. - Men det behøver ikke at være af praktisk
betydning, end ikke i på meget travle web-sites, fordi forskellige
caching teknikker kan være i brug.

> Lad istedet billedet ligge et sted
> på dit filsystem og kald det fx. nyhed_ID.jpg eller lign (ID erstattes
> selvfølgelig af det aktuelle nyheds id).
- Hvorefter der kan opstå inkonsistens mellem database og billeddata.
Fedt.

--
Greetings from Troels Arvin, Copenhagen, Denmark


Christian Joergensen (06-08-2002)
Kommentar
Fra : Christian Joergensen


Dato : 06-08-02 20:06

On Tue, 06 Aug 2002 18:59:31 +0200, Troels Arvin wrote:

>> _Aldrig_ binære data i en database.

> Sikke noget vrøvl. At outputte billeddata fra et databasesystem går
> naturligvis langsommere og er mere hukommelseskrævende end at sende en
> fil i hovedet på folk. - Men det behøver ikke at være af praktisk
> betydning, end ikke i på meget travle web-sites, fordi forskellige
> caching teknikker kan være i brug.

Det ændrer ikke på, at det til hver en tid bør undgås. Jeg kan ikke
lige komme i tanker om nogle tilfælde, hvor det vil være en god idé at
gemme binære filer i en database?

>> Lad istedet billedet ligge et sted på dit filsystem og kald det fx.
>> nyhed_ID.jpg eller lign (ID erstattes selvfølgelig af det aktuelle
>> nyheds id).

> - Hvorefter der kan opstå inkonsistens mellem database og billeddata.
> Fedt.

Det burde ikke ske med mindre nogen med vilje koder forkert, eller sletter
billederne manuelt. Hvis man har struktureret sin kode ordentligt vil man
også have overblik over hvilke dele der har med filerne/tabellerne at
gøre.

--
Christian Jørgensen | Codito, Ergo Sum
http://www.razor.dk |

Peter Brodersen (06-08-2002)
Kommentar
Fra : Peter Brodersen


Dato : 06-08-02 21:00

On Tue, 06 Aug 2002 21:06:27 +0200, Christian Joergensen
<mail@phpguru.dk> wrote:

>Det ændrer ikke på, at det til hver en tid bør undgås.

Det er noget hø. Hvilket SQL-kursus har du det fra?

Det kan være et fint råd at give til folk af forskellige årsager, fx
hvis folk er glade for at select'e alt ud altid, etc. Men den
polarisering af et godt råd ser jeg ingen grund til.

>Jeg kan ikke
>lige komme i tanker om nogle tilfælde, hvor det vil være en god idé at
>gemme binære filer i en database?

Centralisering? Simpel database-replikering uden samtidig at skulle
flytte filer fra filsystemet med (hvilket i princippet bør ske i samme
transaktion)? Rettighedsmæssige årsager, uden at skulle oprette
brugere i operativsystemet?

>Det burde ikke ske med mindre nogen med vilje koder forkert, eller sletter
>billederne manuelt. Hvis man har struktureret sin kode ordentligt vil man
>også have overblik over hvilke dele der har med filerne/tabellerne at
>gøre.

Det var nu noget af en simplificering.

--
- Peter Brodersen

Troels Arvin (06-08-2002)
Kommentar
Fra : Troels Arvin


Dato : 06-08-02 21:41

On Tue, 06 Aug 2002 21:06:27 +0200, Christian Joergensen wrote:

> Jeg kan ikke lige
> komme i tanker om nogle tilfælde, hvor det vil være en god idé at gemme
> binære filer i en database?

Hvis billederne har relation til andre data (såsom copyright-info,
billed-metadata, rettigheder, osv.) kan det lige så godt gemmes - viola:
som relationer. Det er tåbeligt på forhånd at lade sig skræmme af, at
datamængderne har betydelige størrelsesforskelle.

Rent _praktisk_ er der visse databasesystemer, hvor BLOB-håndtering er
besværligt. Og uden passende caching på relevant niveau vil et travlt site
hurtigt bryde sammen.

- Men givet at de praktiske omstændigheder er på plads, er det fjollet
pludselig at hive visse data ud af deres relationer blot fordi de fylder
meget. Man bør stræbe efter at praktiske problemer ikke lægger sig i vejen
for logiske konstruktioner.

>> - Hvorefter der kan opstå inkonsistens mellem database og billeddata.
>> Fedt.
>
> Det burde ikke ske
[...]

Der er så meget, der ikke burde kunne ske.

--
Greetings from Troels Arvin, Copenhagen, Denmark

Morten Winther (06-08-2002)
Kommentar
Fra : Morten Winther


Dato : 06-08-02 22:00


"Troels Arvin" <troels@arvin.dk> wrote in message
news:3d503478$0$43651$edfadb0f@dspool01.news.tele.dk...
> On Tue, 06 Aug 2002 21:06:27 +0200, Christian Joergensen wrote:

> Rent _praktisk_ er der visse databasesystemer, hvor BLOB-håndtering er
> besværligt. Og uden passende caching på relevant niveau vil et travlt site
> hurtigt bryde sammen.

Hvilken form for caching ville du anvende? En alm webproxy foran eller noget
i den dur?

Jeg tænkte også på at anvende db til at gemme billeder på sitet
www.megapixel.dk , men når en database så fysisk fylder mere end en harddisk
hvad gør man så?

Lige nu har jeg ca. 9000 billeder som fylder godt 4,5 GB, så det ville ikke
problem at have dem i en database, men kan man have en database delt over
flere diske?

/ morten







Troels Arvin (06-08-2002)
Kommentar
Fra : Troels Arvin


Dato : 06-08-02 22:31

On Tue, 06 Aug 2002 22:59:34 +0200, Morten Winther wrote:

> Hvilken form for caching ville du anvende? En alm webproxy foran eller
> noget i den dur?
En proxy foran web-serveren har jeg god erfaring med. Man skal blot huske
at udsende passende caching relaterede HTTP-headers. Det er fx. nyttesløst
at have en proxy foran web-serveren hvis billedet ikke udsendes med nogle
HTTP-headers der gør det muligt at cache'e det.

Man kan fx. også cache ved at dump'e billeddata til et område i web-scope.
På denne måde får man fordelen af at kunne lade web-serveren levere
billedet direkte uden om databasen, men man har stadig originaldata samlet
i logiske relationer - og man kan hvis der skulle opstå tvivl blot slette
de dump'ede billeddata. En sådan løsning vil kræve at éns PHP tænker noget
i stil med: "Findes dette billede allerede som dump'et udgave og er det
relativt nyt? - Fint. Ellers dump'er jeg det lige ned på filsystemet (i
web-scope). Herefter kan jeg link'e til billedet i min HTML".

> Jeg tænkte også på at anvende db til at gemme billeder på sitet
> www.megapixel.dk , men når en database så fysisk fylder mere end en
> harddisk hvad gør man så?
Så skal man enten finde et mere kraftfuldt hardware/database-software
setup eller kaste sig over forskellige hacks.

> Lige nu har jeg ca. 9000 billeder som fylder godt 4,5 GB, så det ville
> ikke problem at have dem i en database, men kan man have en database
> delt over flere diske?
Med kæmpe-databasesystemer såsom Oracle kan man alt, men det typisk dyrt
og ualmindelig besværligt at holde kørende. - Så i dette tilfælde kan det
være, at de praktiske/økonomiske forhold bliver så tungtvejende, at man må
skilde billeddata fra de relaterede data, og hive dem ud af
databasesystemet til fordel for det rå filsystem.

--
Greetings from Troels Arvin, Copenhagen, Denmark

Johan Holst Nielsen (07-08-2002)
Kommentar
Fra : Johan Holst Nielsen


Dato : 07-08-02 10:19

>>Lige nu har jeg ca. 9000 billeder som fylder godt 4,5 GB, så det ville
>>ikke problem at have dem i en database, men kan man have en database
>>delt over flere diske?
>
> Med kæmpe-databasesystemer såsom Oracle kan man alt, men det typisk dyrt
> og ualmindelig besværligt at holde kørende. - Så i dette tilfælde kan det
> være, at de praktiske/økonomiske forhold bliver så tungtvejende, at man må
> skilde billeddata fra de relaterede data, og hive dem ud af
> databasesystemet til fordel for det rå filsystem.

Eller lave et workaround med range på billederne... nu ved jeg ikke
hvorledes billederne er bygget op... men f.eks. kunne man via PHP
definere hvor billederne lå... eller en lille DB på en af diskene..
således den ved hvor billederne skal selectes...

Dog ville jeg også bruge filsystemet i dette tilfælde :)

mvh
Johan



Jonas Koch Bentzen (06-08-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 06-08-02 19:20

Christian Joergensen skrev:
>
> _Aldrig_ binære data i en database.

En ret radikal holdning vil jeg mene. Jeg vil medgive, at det i langt de
fleste tilfælde er bedre at holde filerne i filsystemet og så gemme
filnavnene i databasen, men der er altså undtagelser.


Søg
Reklame
Statistik
Spørgsmål : 177505
Tips : 31968
Nyheder : 719565
Indlæg : 6408554
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste