/ 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
$_POST (file) ??
Fra : MacJohn


Dato : 20-11-06 17:01

Jeg kan hente alm. variabler sendt fra en form via $_POST['variabel']

Men hvad, når der er tale om <input type="file" name="variabel"> hvordan
henter jeg så indholdet af variabel?

Mvh
John

 
 
Bertel Lund Hansen (20-11-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 20-11-06 17:11

MacJohn skrev:

> Jeg kan hente alm. variabler sendt fra en form via $_POST['variabel']

> Men hvad, når der er tale om <input type="file" name="variabel"> hvordan
> henter jeg så indholdet af variabel?

Hvis det kun er indholdet du skal bruge, hvorfor så type="file"?

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

MacJohn (20-11-2006)
Kommentar
Fra : MacJohn


Dato : 20-11-06 18:06

Bertel Lund Hansen wrote:

> Hvis det kun er indholdet du skal bruge, hvorfor så type="file"?
>


Æhm... det...ved... jeg ikke..tror vist ikke jeg ved hvor du vil hen..?!

Altså, det er meningen at man skal kunne uploade en fil, (og det er
filen jeg kalder 'indholdet')

jeg havde lavet en sætning som skulle tjekke om brugeren forsøger at
uploade en fil.

Men if($variabel){så gem filen;} registrerer ikke at der er nogen fil.

Så prøvede jeg if($_POST['variabel']) {gem fil;} - og det funker heller
ikke....


Martin Mouritzen (20-11-2006)
Kommentar
Fra : Martin Mouritzen


Dato : 20-11-06 18:27

On Mon, 20 Nov 2006 17:00:45 +0100, MacJohn
<john@skrivikkedettebasix.dk> wrote:

> Jeg kan hente alm. variabler sendt fra en form via $_POST['variabel']
>
>Men hvad, når der er tale om <input type="file" name="variabel"> hvordan
>henter jeg så indholdet af variabel?

Du skal bruge $_FILES arrayet, og derudover skal du huske at sætte
enctype="multipart/form-data" på dit form tag.

Du kan læse mere her:
http://dk2.php.net/features.file-upload

--
Med venlig hilsen,
Martin Mouritzen.
http://www.siteloom.dk

John Kjoller (28-11-2006)
Kommentar
Fra : John Kjoller


Dato : 28-11-06 17:55


"Martin Mouritzen" <martin@siteloom.dk> skrev :
> Du skal bruge $_FILES arrayet, og derudover skal du huske at sætte
> enctype="multipart/form-data" på dit form tag.
>
> Du kan læse mere her:
> http://dk2.php.net/features.file-upload
>

Tak... men så møder jeg et andet problem:

Jeg tjekker om brugeren forsøger at uploade en fil:

if($_FILES['filnavn_i_formen']) { echo'tjek'; }

Og så får jeg tjek uanset om brugeren forsøger at uploade fil eller ej. Hvis
formen er submittet, så får jeg tjek.
Nogen der kan hjælpe ?

Mvh
John



Bertel Lund Hansen (28-11-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 28-11-06 18:55

John Kjoller skrev:

> Og så får jeg tjek uanset om brugeren forsøger at uploade fil eller ej. Hvis
> formen er submittet, så får jeg tjek.
> Nogen der kan hjælpe ?

if (isset($_POST['send'])) {
   $uploadfile=$_FILES['userfile']['name'];
   if ($uploadfile>'') {
      if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
         $errormessage="Filen er overført.";
      else {
         switch ($_FILES['userfile']['error']) {
            case UPLOAD_ERR_INI_SIZE: $errormessage="Filen er for stor (servergrænse)."; break;
            case UPLOAD_ERR_FORM_SIZE: $errormessage="Filen er for stor (&gt;".MAXFILESIZE.")."; break;
            case UPLOAD_ERR_PARTIAL: $errormessage="Filen blev kun delvist overført."; break;
            case UPLOAD_ERR_NO_FILE: $errormessage="Der blev slet ikke overført nogen fil."; break;
            case UPLOAD_ERR_NO_TMP_DIR: $errormessage="Serverfejl (ingen TMP-dir)."; break;
            case UPLOAD_ERR_CANT_WRITE: $errormessage="Det var ikke muligt at skrive på disken."; break;
         }
         $_SESSION['errorreport']=OWNER." har brugt sin FTP-side, men har fået følgende problem:\n\n$errormessage\n\n$_FILES = ".print_r($_FILES,1);
         $error=1;
      }
   }
}

$_POST['send'] sættes af min submitknap.

Omsætningen til en almindelig variabel i linje 2 er rent kosmetisk.

Variablen $errormessage indeholder den besked brugeren skal have
som kvittering. Jeg bruger den også i en mail til mig selv, for
ellers kunne man bare echo'e den med det samme.

$_SESSION['errorreport'] er den besked der skal stå i mailen til
mig. Den linje kan fjernes. Den kan også echo'es med det samme
under udviklingen fordi den dumper $_FILES.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

MacJohn (28-11-2006)
Kommentar
Fra : MacJohn


Dato : 28-11-06 19:14

"Bertel Lund Hansen" <unospamo@lundhansen.dk> skrev :
> if (isset($_POST['send'])) {
> $uploadfile=$_FILES['userfile']['name'];
> if ($uploadfile>'') {
> if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
> $errormessage="Filen er overført.";
> else {
> switch ($_FILES['userfile']['error']) {
> case UPLOAD_ERR_INI_SIZE: $errormessage="Filen er for stor
> (servergrænse)."; break;
> case UPLOAD_ERR_FORM_SIZE: $errormessage="Filen er for stor
> (&gt;".MAXFILESIZE.")."; break;
> case UPLOAD_ERR_PARTIAL: $errormessage="Filen blev kun delvist
> overført."; break;
> case UPLOAD_ERR_NO_FILE: $errormessage="Der blev slet ikke overført
> nogen fil."; break;
> case UPLOAD_ERR_NO_TMP_DIR: $errormessage="Serverfejl (ingen TMP-dir).";
> break;
> case UPLOAD_ERR_CANT_WRITE: $errormessage="Det var ikke muligt at skrive
> på disken."; break;
> }
> $_SESSION['errorreport']=OWNER." har brugt sin FTP-side, men har fået
> følgende problem:\n\n$errormessage\n\n$_FILES = ".print_r($_FILES,1);
> $error=1;
> }
> }
> }
>

Tak for tålmodig hjælp, Bertel.
Jeg fandt ud af bare at tjekke om $_FILES['filnavn']['name'] var sat, og det
fungerer jo fint.

Og nu så næste problem i rækken:
For længe siden stødte jeg på et script som genererer en ny grafik fil med
tvungne størrelsesforhold. Altså max højde og bredde.
Dette script skal nu behandle filen i $_FILES['filnavn']
Jeg har brugt scriptet hundrede gange på Wannafind og Unoeuro, - men nu hvor
en side er flyttet til Web10 - kan jeg ikke få det til at fungere. Og jeg
kan ikke finde ud af om det er min brug af $_FILES (Som jeg ikke har skullet
bruge på Unoeuro og Wannafind) eller om det er web10 som ikke kan køre mit
image resize script...

Kan nogen mon gennemskue om der kan være et problem med nedenstående script,
i forhold til web10?

Scriptet kommer her:

function resampimagestorjpg($forcedwidth, $forcedheight, $srcfile,
$destfile, $imgcomp)

{

$g_imgcomp=100-$imgcomp;

$g_srcfile=$srcfile;

$g_dstfile=$destfile;

$g_fw=$forcedwidth;

$g_fh=$forcedheight;

if(file_exists($g_srcfile))

{

$g_is=getimagesize($g_srcfile);

if(($g_is[0]-$g_fw)>=($g_is[1]-$g_fh))

{

$g_iw=$g_fw;

$g_ih=($g_fw/$g_is[0])*$g_is[1];

if ($g_ih>$g_fh) { $g_ih=$g_fh;
$g_iw=($g_ih/$g_is[1])*$g_is[0];}

}

else

{

$g_ih=$g_fh;

$g_iw=($g_ih/$g_is[1])*$g_is[0];

if ($g_iw>$g_fw) { $g_iw=$g_fw;
$g_ih=($g_fw/$g_is[0])*$g_is[1];}

}

$img_src=imagecreatefromjpeg($g_srcfile);

$img_dst=imagecreatetruecolor($g_iw,$g_ih);

imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $g_iw, $g_ih,
$g_is[0], $g_is[1]);

imagejpeg($img_dst, $g_dstfile, $g_imgcomp);

imagedestroy($img_dst);

return true;

}

else

return false;

}

Jeg kalder funktionen sådan her:
resampimagestorjpg(75,75,$_FILES['filnavn'],"../sti/nytfilnavn.jpg",0);

Mvh
john



MacJohn (29-11-2006)
Kommentar
Fra : MacJohn


Dato : 29-11-06 02:00

Case closed.

Jeg fandt ud af det.

Hvis nogen har lignende problemer er man velkommen til at prøve at
spørge, men jeg er i tvivl om overblikket lige nu. Derfor skriver jeg
ikke straks hvad jeg fandt ud af.

Jo, en ting: når filen skal bruges, skulle jeg bruge
$_FILES['filnavn']['tmp_name']

Og der var tilsyneladende ingen problemer med resize-scriptet på web10.

Mvh
John

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

Månedens bedste
Årets bedste
Sidste års bedste