|
| Billedupload i mySQL database Fra : Christoffer Kjeldgaa~ |
Dato : 08-07-03 13:46 |
|
Hej derude,
Jeg er igang med at lave et slags "nyhedssystem" i php, hvor man
skal kunne tilføje en overskrift, en tekst og et billede (og
intet andet), som bliver lagt op i en mySQL-database. På en anden
side skal man så kunne alle de indlæg og billeder der er blevet
tilføjet.
Så vidt jeg har kunnet forstå ved at kigge mig lidt omkring på
nettet, så er det ikke så smart at smide hele billeder op i
databasen. Derimod skulle det være bedre kun at putte navnet på
billedet i databasen, samtidig med at selve billedet bliver
uploadet til en mappe på serveren. På siden hvor man skal læse
indlæggene skal må så linke til mappen med billedet, og finde
billednavnet via databasen.
Det jeg har svært ved, er at det inputfelt af typen 'file' på
tilføj-siden jo både skal uploade billedet til en mappe SAMTIDIG
med at navnet på billedet bliver lagt i databasen. Og hvordan
"isolerer" man i øvrigt billednavnet, så det kun er dét der
bliver lagt op?
Hvis der er nogle derude der ved det, må de meget gerne hjælpe
mig. Jeg har efterhånden stødt hovedet mod muren.
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
jæsparr (08-07-2003)
| Kommentar Fra : jæsparr |
Dato : 08-07-03 14:03 |
|
Christoffer Kjeldgaard wrote:
> Hej derude,
>
> Jeg er igang med at lave et slags "nyhedssystem" i php, hvor man
> skal kunne tilføje en overskrift, en tekst og et billede (og
> intet andet), som bliver lagt op i en mySQL-database. På en anden
> side skal man så kunne alle de indlæg og billeder der er blevet
> tilføjet.
> Så vidt jeg har kunnet forstå ved at kigge mig lidt omkring på
> nettet, så er det ikke så smart at smide hele billeder op i
> databasen. Derimod skulle det være bedre kun at putte navnet på
> billedet i databasen, samtidig med at selve billedet bliver
> uploadet til en mappe på serveren. På siden hvor man skal læse
> indlæggene skal må så linke til mappen med billedet, og finde
> billednavnet via databasen.
>
> Det jeg har svært ved, er at det inputfelt af typen 'file' på
> tilføj-siden jo både skal uploade billedet til en mappe SAMTIDIG
> med at navnet på billedet bliver lagt i databasen. Og hvordan
> "isolerer" man i øvrigt billednavnet, så det kun er dét der
> bliver lagt op?
> Hvis der er nogle derude der ved det, må de meget gerne hjælpe
> mig. Jeg har efterhånden stødt hovedet mod muren.
>
Det er slet ikke noget problem at have billeder i en database. Se selv:
http://delfs.dk/articles/danish/Filer_i_mysql.html
--
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesper S Nielsen - http://query.dk - looney at 0x960 dot net
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| |
Christoffer Kjeldgaa~ (08-07-2003)
| Kommentar Fra : Christoffer Kjeldgaa~ |
Dato : 08-07-03 14:46 |
|
jæsparr wrote in dk.edb.internet.webdesign.serverside.php:
> Christoffer Kjeldgaard wrote:
> > Hej derude,
> >
> > Jeg er igang med at lave et slags "nyhedssystem" i php, hvor man
> > skal kunne tilføje en overskrift, en tekst og et billede (og
> > intet andet), som bliver lagt op i en mySQL-database. På en anden
> > side skal man så kunne alle de indlæg og billeder der er blevet
> > tilføjet.
> > Så vidt jeg har kunnet forstå ved at kigge mig lidt omkring på
> > nettet, så er det ikke så smart at smide hele billeder op i
> > databasen. Derimod skulle det være bedre kun at putte navnet på
> > billedet i databasen, samtidig med at selve billedet bliver
> > uploadet til en mappe på serveren. På siden hvor man skal læse
> > indlæggene skal må så linke til mappen med billedet, og finde
> > billednavnet via databasen.
> >
> > Det jeg har svært ved, er at det inputfelt af typen 'file' på
> > tilføj-siden jo både skal uploade billedet til en mappe SAMTIDIG
> > med at navnet på billedet bliver lagt i databasen. Og hvordan
> > "isolerer" man i øvrigt billednavnet, så det kun er dét der
> > bliver lagt op?
> > Hvis der er nogle derude der ved det, må de meget gerne hjælpe
> > mig. Jeg har efterhånden stødt hovedet mod muren.
> >
>
> Det er slet ikke noget problem at have billeder i en database. Se selv:
> http://delfs.dk/articles/danish/Filer_i_mysql.html
>
> --
> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
> Jesper S Nielsen - http://query.dk - looney at 0x960 dot net
> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
>
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Christoffer Kjeldgaa~ (08-07-2003)
| Kommentar Fra : Christoffer Kjeldgaa~ |
Dato : 08-07-03 17:10 |
|
> jæsparr wrote in dk.edb.internet.webdesign.serverside.php:
> Det er slet ikke noget problem at have billeder i en database. Se selv:
> http://delfs.dk/articles/danish/Filer_i_mysql.html
Hovsa, der kom jo slet ikke noget med i det sidste indlæg. Nå, vi prøver bare
igen så:
Jeg har kigget lidt på den artikel og har efterprøvet det der står, men til
stor ærgelse virker den ikke. Jeg går ud fra der er to sider: Den hvor man
uploader billederne (filer_i_mysql.php) og den side hvor man kan se billederne
(filer.php). Eller har jeg misforstået noget her?
Når man kører upload-siden sender den ganske vidst nogle oplysninger til
databasen, men den glemmer desværre oplysningen file_code, og siden hvor man
kan se billederne viser således ikke andet end fejlmeddelelsen "404 - file not
found!". Man får et par Warnings på uploadsiden, hvorefter den fortsætter og
fortæller, at filen er blevet sendt til databasen:
Warning: open_basedir restriction in effect. File is in wrong directory in
filer_i_mysql.php on line 22
Warning: fopen("/usr/tmp/phpGdgk4z", "r") - Operation not permitted in
filer_i_mysql.php on line 22
Warning: Supplied argument is not a valid File-Handle resource in
filer_i_mysql.php on line 22
Your file is saved i the mysql-table 'files'
I dette tilfælde er linje 22 følgende:
$file_code = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
Hvad er det der går galt her? For bortset fra denne ene linje lader det til at
scriptet kører fint, og det var jo også lige det jeg skulle bruge.
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Flemming Joensson (08-07-2003)
| Kommentar Fra : Flemming Joensson |
Dato : 08-07-03 14:12 |
|
Christoffer Kjeldgaard <christoffer@result.dk> wrote in
news:beeees$cr7$1@sunsite.dk:
> Hvis der er nogle derude der ved det, må de meget gerne hjælpe
> mig. Jeg har efterhånden stødt hovedet mod muren.
$HTTP_POST_FILES['userfile']['name']
Den variabel indeholder navnet på filen der er blevet gemt.
Det forudsætter din form der sender filen ser ud som dette:
<FORM ENCTYPE="multipart/form-data" ACTION="imageupload.php" METHOD="POST">
Vælg billedet der skal uploades: <INPUT TYPE="file" NAME="userfile">
<INPUT TYPE="submit" VALUE="Upload">
</FORM>
imageupload.php indeholder så følgende:
/* START */
$path = "e:/www_root/up_images/"; //fuld sti til upload
$max_size = 2000000; //max størrelse i bytes
//først et tjek af filens størrelse
if ($HTTP_POST_FILES['userfile']['size'] > $max_size) {
echo "Filen er for stor - reducer billedets størrelse og prøv
igen<br>\n";
exit;
}
//Derefter tjekker jeg om filen er en mime-type der må uploades.
if (($HTTP_POST_FILES['userfile']['type'] == "image/gif") ||
($HTTP_POST_FILES['userfile']['type'] == "image/pjpeg") ||
($HTTP_POST_FILES['userfile']['type'] == "image/jpeg")) {
//Hvis det er den rigtige type, så kopierer jeg filen til upload
$res = copy($HTTP_POST_FILES['userfile']['tmp_name'],
$path.$HTTP_POST_FILES['userfile']['name']);
if (!$res) {
echo "Billedet kunne ikke gemmes!<br>\n";
exit;
} else {
//Her kan du afvikle den kode der skal opdatere din
//database, og eventuelt udskrive lidt "success" info.
echo "Billedet er nu tilgængeligt på serveren på adressen: <a
href=\"/images/".$HTTP_POST_FILES['userfile']['name']."\"> http://".$_SERVER
['SERVER_NAME']."/up_images/".$HTTP_POST_FILES['userfile']['name']."</a><br
>\n";
}
}
/* SLUT */
Ovenstående er noget simplificeret, og der er flere tjek man kan lave, men
det burde give dig en idé om hvad der skal til.
Mvh.
Flemming
| |
Flemming Joensson (08-07-2003)
| Kommentar Fra : Flemming Joensson |
Dato : 08-07-03 14:14 |
|
Flemming Joensson <joensson@fjerndette.cs.auc.dk> wrote in
news:Xns93B29B10B50E6joenssonfjerndettecs@130.225.247.90:
> echo "Billedet er nu tilgængeligt på serveren på adressen:
> <a href=\"/images/"
Her skal der selvfølgelig stå /up_images/ for at linket virker.
Flemming
| |
Flemming Joensson (08-07-2003)
| Kommentar Fra : Flemming Joensson |
Dato : 08-07-03 14:24 |
|
Flemming Joensson <joensson@fjerndette.cs.auc.dk> wrote in
news:Xns93B29B10B50E6joenssonfjerndettecs@130.225.247.90:
>> Hvis der er nogle derude der ved det, må de meget gerne hjælpe
>> mig. Jeg har efterhånden stødt hovedet mod muren.
>
> $HTTP_POST_FILES['userfile']['name']
Ovenstående er taget fra et gammelt script jeg havde - hvis det skal være
helt efter bogen, skal du slette HTTP_POST fra alle variable ved navne
HTTP_POST_FILES sådan at de kun hedder $_FILES - men det virker nu stadig
fint i PHP 4.3.2 :)
Flemming
| |
Christoffer Kjeldgaa~ (08-07-2003)
| Kommentar Fra : Christoffer Kjeldgaa~ |
Dato : 08-07-03 15:11 |
|
Okay, jeg har afprøvet det du har skrevet, men der bliver meldt fejl allerede
inden vi når til "det sjove". Der hvor du tjekker om det er filer der må
uploades, meldes der tilbage med en parse-error:
Parse error: parse error in imageupload.php on line 16
Og linje 16 er her den linje der hedder:
($HTTP_POST_FILES['userfile']['type'] == "image/pjpeg")
Jeg har også forsøgt at udskifte $HTTP_POST_FILES med $_FILES som du skrev,
men det meldte blot samme resultat.
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Flemming Joensson (09-07-2003)
| Kommentar Fra : Flemming Joensson |
Dato : 09-07-03 08:34 |
|
Christoffer Kjeldgaard <sjamser@hotmail.com> wrote in
news:beejd4$l7l$1@sunsite.dk:
> Parse error: parse error in imageupload.php on line 16
>
> Og linje 16 er her den linje der hedder:
>
> ($HTTP_POST_FILES['userfile']['type'] == "image/pjpeg")
>
> Jeg har også forsøgt at udskifte $HTTP_POST_FILES med $_FILES som du
> skrev, men det meldte blot samme resultat.
Jeg tror parsefejlen skyldes at den kode jeg postede her i gruppen blev
wrappet. Så hvis du stadig vil teste det, så prøv og fjern linebreak efter
if (($HTTP_POST_FILES['userfile']['type'] == "image/gif") ||
og efter ($HTTP_POST_FILES['userfile']['type'] == "image/pjpeg") ||
Sådan at du får én lang linje der begynder med "if (" og slutter med ") {"
Så burde der ikke være parsefejl. Jeg kører selv med koden lige pt. på en
Windowsmaskine med apache og PHP 4.3.2 og det virker fint her.
Flemming
| |
Christoffer Kjeldgaa~ (08-07-2003)
| Kommentar Fra : Christoffer Kjeldgaa~ |
Dato : 08-07-03 19:48 |
|
Flemming Joensson wrote in dk.edb.internet.webdesign.serverside.php:
> $HTTP_POST_FILES['userfile']['name']
>
> Den variabel indeholder navnet på filen der er blevet gemt.
Okay, nu virker det faktisk - sådan næsten da. Jeg brugte godt nok ikke den
php-kode som du skrev, men jeg lavede lidt om på koden fra Webcafé's artikel
om filupload, og nu virker det upåklageligt. Og du havde jo ret Flemming. Man
skulle bare bruge den ene variabel, og så gemte den filnavnet. Jeg vil gerne
sige dig mange tusind tak. Nu virkermit newssystem og jeg kan komme videre med
udviklingen af det website jeg var igang med.
Mange, mange tak,
Christoffer Kjeldgaard
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Flemming Joensson (09-07-2003)
| Kommentar Fra : Flemming Joensson |
Dato : 09-07-03 08:35 |
|
Christoffer Kjeldgaard <christoffer@sappy.dk> wrote in
news:bef3kq$h9a$1@sunsite.dk:
> Okay, nu virker det faktisk - sådan næsten da. Jeg brugte godt nok
> ikke den php-kode som du skrev, men jeg lavede lidt om på koden fra
> Webcafé's artikel om filupload, og nu virker det upåklageligt. Og du
> havde jo ret Flemming. Man skulle bare bruge den ene variabel, og så
> gemte den filnavnet. Jeg vil gerne sige dig mange tusind tak. Nu
> virkermit newssystem og jeg kan komme videre med udviklingen af det
> website jeg var igang med.
>
Det var så lidt, glad for at kunne hjælpe.
Flemming
| |
Nezar Nielsen (08-07-2003)
| Kommentar Fra : Nezar Nielsen |
Dato : 08-07-03 14:14 |
|
Christoffer Kjeldgaard wrote:
> Det jeg har svært ved, er at det inputfelt af typen 'file' på
> tilføj-siden jo både skal uploade billedet til en mappe SAMTIDIG
> med at navnet på billedet bliver lagt i databasen. Og hvordan
> "isolerer" man i øvrigt billednavnet, så det kun er dét der
> bliver lagt op?
http://dk.php.net/features.file-upload
kig på $_FILES arrayet, det indeholder de oplysninger der skal bruges,
husk at flytte den uploadede fil et eller andet sted hen med
http://dk.php.net/move_uploaded_file
og gem den nye sti.
--
Mvh. Nezar Nielsen
http://fez.dk/
| |
|
|