/ 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 filer
Fra : Kurt G


Dato : 21-11-10 18:33

Hej NG!

Jeg er ved at forsøge mig lidt mere intensivt med MySQL og PHP og støder til
stadighed ind i problemer/udfordringer.

Jeg vil gerne ende med fra en af mine sider at kunne uploade nogle
billedfiler til en MySQL-database.

Undervejs i mine forsøg har jeg i et hefte set noget kode for upload af en
fil, tilsyneladende kun med upload til serveren, men det er måske et skridt
på vejen.
Det ser således ud:
-------------------------------------
<html>
<body>
<form method="post" action="VisFilupload.php">
Fil: <input type="file" name="fil"/><br/>
<input type="submit" value="Upload fil" />
</form>
</body>
</html>
-------------------------------------
og til at vise indholdet:
-------------------------------------
<html>
<head>
<meta http-equiv="Content-Language" content="da">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Her vises resultatet af filupload</title>
</head>
<body>
<p>Her vises resultatet af filupload</p>
<?php
$fil = $_FILES["fil"];
// Kontroller om uploaden gik godt
if ($fil["error"] > 0)
{
echo "Upload mislykkedes. Fejlkode: " . $fil["error"];
} else {
echo "Oplysninger om den uploadede fil:<br/>";
echo "Navn: " . $fil["name"] . "<br/>";
echo "Type: " . $fil["type"] . "<br/>";
echo "Størrelse: " . $fil["size"] . " bytes<br/>";
echo "Midlertidigt gemt i " . $fil["tmp_name"] . "<br/>";
}
?>
</body>
</html>
-------------------------------------

Problemet er, at der ikke vises nogen fejl, men heller ikke noget om
indholdet.
Er koden korrekt?

Mvh Kurt



 
 
Mads Lie Jensen (21-11-2010)
Kommentar
Fra : Mads Lie Jensen


Dato : 21-11-10 19:15

On Sun, 21 Nov 2010 18:33:18 +0100, "Kurt G" <kurt_g@guldbaek.net>
wrote:

><form method="post" action="VisFilupload.php">

Du skal have en ' enctype="multipart/form-data"' med når der skal
uploades filer:

<form method="post" action="VisFilupload.php"
enctype="multipart/form-data">

><?php
> $fil = $_FILES["fil"];

Prøv i stedet at lave en

var_dump($_FILES);

Så kan du se hvad der sendes op af filer via formularen.

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
Gartneriet - http://www.gartneriet.dk/

Kurt G (21-11-2010)
Kommentar
Fra : Kurt G


Dato : 21-11-10 22:33

"Mads Lie Jensen" <mads@gartneriet.dk> skrev i en meddelelse
news:b7oie6t4nt9mh6sf1f5e5q31ludb0soat0@4ax.com...
> On Sun, 21 Nov 2010 18:33:18 +0100, "Kurt G" <kurt_g@guldbaek.net>
> wrote:
>
>><form method="post" action="VisFilupload.php">
>
> Du skal have en ' enctype="multipart/form-data"' med når der skal
> uploades filer:
>
> <form method="post" action="VisFilupload.php"
> enctype="multipart/form-data">
>
>><?php
>> $fil = $_FILES["fil"];
>
> Prøv i stedet at lave en
>
> var_dump($_FILES);
>
> Så kan du se hvad der sendes op af filer via formularen.
>
> --
> Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
> Gartneriet - http://www.gartneriet.dk/

Tak for svaret.
Jeg har prøvet dine råd, men det gav intet resultat.
På modtagersiden kom der blot:
---------
Her vises resultatet af filupload
array(0) { }
---------
Mvh Kurt



scootergrisen (22-11-2010)
Kommentar
Fra : scootergrisen


Dato : 22-11-10 00:11

Ved at rette form til :
<form method="post" action="VisFilupload.php" enctype="multipart/form-data">
som den anden bruger skrev så virker det på min computer.
Så det er sikkert noget med din PHP opsætning at gøre.

I stedet for at skrive :

if ($fil["error"] > 0)

Så prøv at vis indholdet i stedet for.

if (isset($fil["error"])){

echo $fil["error"];

}

Det kan være den fil du forsøger at uploade er for stor i forhold til
dine PHP indstillinger så forsøg at oploade en lille fil.

Jeg bruger denne kode til at vise den maksimale fil uploade størrelse
inden brugeren forsøger at uploade.

$maxuploadstorrelse = round(min(
return_bytes(ini_get("upload_max_filesize"))
,return_bytes(ini_get("post_max_size"))
,return_bytes(ini_get("memory_limit"))
)/1024);

echo 'Maksimal fil upload størrelse: ' . $maxuploadstorrelse . ' MB.';

Birger Sørensen (22-11-2010)
Kommentar
Fra : Birger Sørensen


Dato : 22-11-10 01:03

Følgende er skrevet af Kurt G:
> Hej NG!
>
> Jeg er ved at forsøge mig lidt mere intensivt med MySQL og PHP og støder til
> stadighed ind i problemer/udfordringer.
>
> Jeg vil gerne ende med fra en af mine sider at kunne uploade nogle
> billedfiler til en MySQL-database.
>
> Undervejs i mine forsøg har jeg i et hefte set noget kode for upload af en
> fil, tilsyneladende kun med upload til serveren, men det er måske et skridt
> på vejen.
> Det ser således ud:
> -------------------------------------
> <html>
> <body>
> <form method="post" action="VisFilupload.php">
> Fil: <input type="file" name="fil"/><br/>
> <input type="submit" value="Upload fil" />
> </form>
> </body>
> </html>
> -------------------------------------
> og til at vise indholdet:
> -------------------------------------
> <html>
> <head>
> <meta http-equiv="Content-Language" content="da">
> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
> <title>Her vises resultatet af filupload</title>
> </head>
> <body>
> <p>Her vises resultatet af filupload</p>
> <?php
> $fil = $_FILES["fil"];
> // Kontroller om uploaden gik godt
> if ($fil["error"] > 0)
> {
> echo "Upload mislykkedes. Fejlkode: " . $fil["error"];
> } else {
> echo "Oplysninger om den uploadede fil:<br/>";
> echo "Navn: " . $fil["name"] . "<br/>";
> echo "Type: " . $fil["type"] . "<br/>";
> echo "Størrelse: " . $fil["size"] . " bytes<br/>";
> echo "Midlertidigt gemt i " . $fil["tmp_name"] . "<br/>";
> }
> ?>
> </body>
> </html>
> -------------------------------------
>
> Problemet er, at der ikke vises nogen fejl, men heller ikke noget om
> indholdet.
> Er koden korrekt?
>
> Mvh Kurt


Måske kan
http://dk.php.net/manual/en/features.file-upload.post-method.php
hjælpe dig.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



scootergrisen (22-11-2010)
Kommentar
Fra : scootergrisen


Dato : 22-11-10 01:37

> Måske kan
> http://dk.php.net/manual/en/features.file-upload.post-method.php
> hjælpe dig.

Som der står på Birgers link :
"$_FILES will be empty if a user attempts to upload a file greater than
post_max_size in your php.ini"

Så det er nok fordi du har forsøgt at uploade en fil som er større end
hvad php's opsætning tillader.


Birger Sørensen (22-11-2010)
Kommentar
Fra : Birger Sørensen


Dato : 22-11-10 02:45

scootergrisen frembragte:
>> Måske kan
>> http://dk.php.net/manual/en/features.file-upload.post-method.php
>> hjælpe dig.
>
> Som der står på Birgers link :
> "$_FILES will be empty if a user attempts to upload a file greater than
> post_max_size in your php.ini"
>
> Så det er nok fordi du har forsøgt at uploade en fil som er større end hvad
> php's opsætning tillader.

Hvis man nu læser den første note, så er der fem directives i php.ini
der kan påvirke file upload.
Det ene af de webhoteller jeg bruger, har desudn en php5.ini hvor
max-size også kan angives - så der er faktisk mange ting der kan gå
galt, og mange ting at checke.

At gå ud fra at det er fordi filen er for stor i et forsøg, er måske
lidt at forhaste sig.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Kurt G (22-11-2010)
Kommentar
Fra : Kurt G


Dato : 22-11-10 21:31

"scootergrisen" <scootergrisen@gmail.com> skrev i en meddelelse
news:4ce9bb57$0$23751$14726298@news.sunsite.dk...
>> Måske kan
>> http://dk.php.net/manual/en/features.file-upload.post-method.php
>> hjælpe dig.
>
> Som der står på Birgers link :
> "$_FILES will be empty if a user attempts to upload a file greater than
> post_max_size in your php.ini"
>
> Så det er nok fordi du har forsøgt at uploade en fil som er større end
> hvad php's opsætning tillader.
>
Jeg er i gang med at kikke på Birgers link, men kan allerede nu sige, at det
ikke er størrelsen, der forhindre upload.
Jeg fandt et andet sted nogle eksempler, som tilsyneladende kan uploade til
temp-fil, men der opstår der andre problemer! Derom senere.
Mvh Kurt



Henrik Glensbo (22-11-2010)
Kommentar
Fra : Henrik Glensbo


Dato : 22-11-10 06:23

Jeg har set andre modeller på sådanne koder. Der uploadede man billedet via ftp
til et arkiv på serveren og gemte kun stien og filnavnet som henvisning i
databasen. Hvis jeg finder en side vil jeg lige sende linket

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Henrik Glensbo (22-11-2010)
Kommentar
Fra : Henrik Glensbo


Dato : 22-11-10 06:33

Denne side har en enkel gennemgang af sådan en model:
http://php.about.com/od/phpwithmysql/ss/Upload_file_sql.htm


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Kurt G (22-11-2010)
Kommentar
Fra : Kurt G


Dato : 22-11-10 21:33

"Henrik Glensbo" <henrik@glensbo.dk> skrev i en meddelelse
news:4cea00a3$0$23752$14726298@news.sunsite.dk...
> Denne side har en enkel gennemgang af sådan en model:
> http://php.about.com/od/phpwithmysql/ss/Upload_file_sql.htm
>
>
> --
> Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
> - Pædagogiske tutorials på dansk
> - Kom godt i gang med koderne
> KLIK HER! => http://www.html.dk/tutorials

Så er der mere at studere.
Tak for linket.
Mvh Kurt



Kurt G (22-11-2010)
Kommentar
Fra : Kurt G


Dato : 22-11-10 23:33

"Henrik Glensbo" <henrik@glensbo.dk> skrev i en meddelelse
news:4cea00a3$0$23752$14726298@news.sunsite.dk...
> Denne side har en enkel gennemgang af sådan en model:
> http://php.about.com/od/phpwithmysql/ss/Upload_file_sql.htm
>
KLIPPET

Nu har jeg prøvet forskellige ting og tror efterhånden, at det er galt med
opsætning af stier.
http://www.vinderup-egnshistorie.dk/test4a.php (der er flere forsøg med
test1a, test2a, test3a og test4a) har jeg brugt eksemplet fra ovenstående,
og har brugt
$uploaddir = './';
som nævnt i et af kommentarerne.
Dette giver ikke fejl, men til gengæld er der ikke nogen fil at se, så noget
er stadig galt!

Som jeg har forstået det, angiver det den folder, hvortil upload kopieres
til efter upload til en midlertidig fil, men det har jeg måske misforstået?

Mvh Kurt



scootergrisen (23-11-2010)
Kommentar
Fra : scootergrisen


Dato : 23-11-10 00:23

Den 22-11-2010 23:32, Kurt G skrev:
> "Henrik Glensbo"<henrik@glensbo.dk> skrev i en meddelelse
> news:4cea00a3$0$23752$14726298@news.sunsite.dk...
>> Denne side har en enkel gennemgang af sådan en model:
>> http://php.about.com/od/phpwithmysql/ss/Upload_file_sql.htm
>>
> KLIPPET
>
> Nu har jeg prøvet forskellige ting og tror efterhånden, at det er galt med
> opsætning af stier.
> På http://www.vinderup-egnshistorie.dk/test4a.php (der er flere forsøg med
> test1a, test2a, test3a og test4a) har jeg brugt eksemplet fra ovenstående,
> og har brugt
> $uploaddir = './';
> som nævnt i et af kommentarerne.
> Dette giver ikke fejl, men til gengæld er der ikke nogen fil at se, så noget
> er stadig galt!
>
> Som jeg har forstået det, angiver det den folder, hvortil upload kopieres
> til efter upload til en midlertidig fil, men det har jeg måske misforstået?
>
> Mvh Kurt
>
>
Bruge fulde stier istedet for det med './' så du sikker på det er
rigtig.... sådan da.

Altså $uploaddir = '/customers/x.dk/x.dk/upload';
Eller hvor filerne nu skal ligge.


Birger Sørensen (23-11-2010)
Kommentar
Fra : Birger Sørensen


Dato : 23-11-10 01:03

Kurt G forklarede den 22-11-2010:
> "Henrik Glensbo" <henrik@glensbo.dk> skrev i en meddelelse
> news:4cea00a3$0$23752$14726298@news.sunsite.dk...
>> Denne side har en enkel gennemgang af sådan en model:
>> http://php.about.com/od/phpwithmysql/ss/Upload_file_sql.htm
>>
> KLIPPET
>
> Nu har jeg prøvet forskellige ting og tror efterhånden, at det er galt med
> opsætning af stier.
> På http://www.vinderup-egnshistorie.dk/test4a.php (der er flere forsøg med
> test1a, test2a, test3a og test4a) har jeg brugt eksemplet fra ovenstående, og
> har brugt
> $uploaddir = './';
> som nævnt i et af kommentarerne.
> Dette giver ikke fejl, men til gengæld er der ikke nogen fil at se, så noget
> er stadig galt!
>
> Som jeg har forstået det, angiver det den folder, hvortil upload kopieres til
> efter upload til en midlertidig fil, men det har jeg måske misforstået?
>
> Mvh Kurt

Jeg har ikke lige checket dine eksempler.
.. først i en sti eller filnavn, er normat folderen selv - den aktuelle
folder.
../ giver ingen mening, med mindre der er en folder uden navn i den
aktuelle folder - og en folder uden navn er vist ikke lovlig i noget
OS, bortset fra roden.

Men filer uploades til en midlertidig folder.
Directive upload_tmp_dir i php.ini kan give dig navnet på denne folder
- og du skal måske checke det, og se hvad der står.
Hvis en uploaded fil ikke renames eller flyttes, bliver den slettet,
når scriptet stopper. Det burde ikke ske før efter dit script faktiks
har verificeret den, så du burde få besked om at filen findes -
hvorefter den så faktisk vil bleve slettet...

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Kurt G (23-11-2010)
Kommentar
Fra : Kurt G


Dato : 23-11-10 14:40

"Birger Sørensen" <sdc@bbsorensen.com> skrev i en meddelelse
news:4ceb049b$0$23761$14726298@news.sunsite.dk...
Klippet
> Jeg har ikke lige checket dine eksempler.
> . først i en sti eller filnavn, er normat folderen selv - den aktuelle
> folder.
> ./ giver ingen mening, med mindre der er en folder uden navn i den
> aktuelle folder - og en folder uden navn er vist ikke lovlig i noget OS,
> bortset fra roden.
>
> Men filer uploades til en midlertidig folder.
> Directive upload_tmp_dir i php.ini kan give dig navnet på denne folder -
> og du skal måske checke det, og se hvad der står.

Det er jo nok en fil på serveren, men kikker jeg på sitet vis TotalCmd, er
der ikke sådan en fil.
Det må jeg nok spørge udbyderen om!

Men ved forsøgene ses stien til tmp-filen sådan [tmp_name] =>
/customers/vinderup-.egnshistorie.dk/vinderup-egnshistorie.dk/tmp/phpEauj70
så ud fra det må jeg jo så prøve mig frem.


> Hvis en uploaded fil ikke renames eller flyttes, bliver den slettet, når
> scriptet stopper. Det burde ikke ske før efter dit script faktiks har
> verificeret den, så du burde få besked om at filen findes - hvorefter den
> så faktisk vil bleve slettet...
>
> Birger
>
Ja, men den siger faktisk også, at filen er. Men den bliver tilsyneladende
ikke flyttet hen til et sted, hvor jeg har kontakt til den.
Men nu vil jeg prøve med stien fra bunden af, som Scootergrisen anbefaler.

Tak for hjælpen så langt.
Mvh Kurt



Birger Sørensen (23-11-2010)
Kommentar
Fra : Birger Sørensen


Dato : 23-11-10 14:55

Kurt G har bragt dette til verden:
8X
> Ja, men den siger faktisk også, at filen er. Men den bliver tilsyneladende
> ikke flyttet hen til et sted, hvor jeg har kontakt til den.
> Men nu vil jeg prøve med stien fra bunden af, som Scootergrisen anbefaler.
>
> Tak for hjælpen så langt.
> Mvh Kurt

Somme tider virker upload bare første gang - andre gange har man
ustyrligt meget besvær med det, og det er min erfaring, at det har
meget at gøre med hosten.
Det er naturligt et område der skal fokuseres på, af hensyn til
sikkerhed - og det kan være en snak med hosten, kan forklare nogen af
dine problemer.

Ellers vil jeg foreslå dig at prøve at at se på
http://dk.php.net/manual/en/function.move-uploaded-file.php
og flytte filen fra tmp folderen til en anden folder, med dit script.
Hvis alt går vel, skal du med TC så kunne finde den der.

Manualen siger, at hvis du ikke selv fjerne den uploadede fil, eller
renamer den, vil PHP slette den. Og det gælder formentlig hele folderen
der uploades til. Jeg har i hvert fald aldrig kunnet finde den folder,
mine uploads skulle blive gemt i, så jeg tror den bliver oprettet når
der er brug for den, og fjernet igen bagefter, sammen med den uploadede
fil.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste