🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #96

Re: rysunki i pliki w bazie

#96
From: Adam Major
Date: Tue, 21 Aug 2001 07:52
92 lines
2925 bytes
Witaj!

Trzymanie binariów w bazie to nie najlepszy pomysl. Wlasciwie to nie ma
zadnego racjonalnego powodu aby chciec pakowac binaria do bazy.

Czy nie lepiej trzymac w bazie nazwę pliku i jego typ?

Przykladowo, robisz systemik newsów z możliwocią dodania zdjęcia.
Zakladasz ze zdjęcia moga byc w formatach GIF, JPG, PNG  

1. tworzysz formularz w ktorym osoba uprawniona moze dodac newsa
- podaje tresc newsa, tytul itp.
- pole (FILE) umożliwiające dodanie zdjęcia.

2. tworzysz skrypt obrabiajacy dodawanie nowego newsa...
jesli zostal wyslany plik to:
- sprawdzasz jego typ mime, jesli nie pasuje do akceptowanego formatu to
to go kasujesz. [unlink()]
- pobierasz wielkosc obrazka
- dodajesz do bazy nowy rekord o przykladowej strukturze

id | tytul | tresc | typ_obrazka | szerokosc | wysokosc

jako typ_obrazka mozesz przyjac:
0 nie ma obrazka
1 GIF
2 JPG
3 PNG

- jesli format pliku ok to kopiujesz go do wybranego katalogu np. img
  nazwa pliku to numer_ostatniego_id a roszerzenie zależne od typu mime.


3. wyswietlanie newsa

Pobierasz rekord jesli typ_obrazka > 0 to tworzysz nastepujacy fragment
HTMLa np. 

<img src='img/$id.$roz_typ[$roz]' align=left width=$szerokosc 
	height=$wysokosc>

gdzie
$roz_typ = array ('', 'gif','jpg','png');



To tyle...

Stosowanie plików (zamiast bazy) jest szybsze, wygodniejsze w obsludze,
mozesz latwo podejrzec lub skasowac wybrane pliki.


Mała podpowiedz co do typów plików.

IE i NN różnią się w zwracaniu wartosci typu mime dla JPGów...
Róznica wynika dlatego ze NN nie rozróznia JPGów progresywnych od
normalnych.

Fragment kodu okreslającego rozszerzenie pliku na podstawie typu mime.


switch ($pict1_type) 
{
case "image/jpeg" :
	$roz = "jpg";
	break;

case "image/jpg" :
	$roz = "jpg";
	break;

case "image/pjpg" :
	$roz = "jpg";
	break;

case "image/pjpeg" :
	$roz = "jpg";
	break;

case "image/png":
	$roz = "png";
	break;

case "image/gif":
	$roz = "gif";
	break;
} 



Pozdrawiam Adam
I witam wszystkich na nowej grupie.
Technical Details
Message-ID: <3B821353.D31639F6@tenbit.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.man.poznan.pl!news.ipartners.pl!news.internetia.pl!news.tpi.pl!not-for-mail
References: <3b7e345f$1@news.bsi.net.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.man.poznan.pl!news.ipartners.pl!news.internetia.pl!news.tpi.pl!not-for-mail
From: Adam Major <amajor@tenbit.pl>
Newsgroups: pl.comp.lang.php
Subject: Re: rysunki i pliki w bazie
Date: Tue, 21 Aug 2001 09:52:51 +0200
Organization: tp.internet - http://www.tpi.pl
Lines: 93
Message-ID: <3B821353.D31639F6@tenbit.pl>
References: <3b7e345f$1@news.bsi.net.pl>
NNTP-Posting-Host: pa106.bydgoszcz.cvx.ppp.tpnet.pl
Mime-Version: 1.0
X-Trace: news.tpi.pl 998380278 23721 213.76.48.106 (21 Aug 2001 07:51:18 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: 21 Aug 2001 07:51:18 GMT
X-Accept-Language: pl,en
X-Mailer: Mozilla 4.74 [en] (Win98; U)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit