Gå til innhold

[Løst]Feilsøking mtp. opplasting av bildefil


Anbefalte innlegg

Hei!

 

Jeg pusler med et publiserings-prosjekt, hvor man skrive artikler som publiseres på fremsiden av en webside. Så har jeg nylig prøvd å implementere en opplasting av bilde til artikkelen, da fremsiden blir veldig daff uten bilder.

 

Det er denne kodesnutten som er problemet:

 

if ( $_FILES["file"]["error"] > 0 )
{
echo "Feil: " . $_FILES["file"]["error"] . "<br />";
}
else {// Filtype-begrensninger
if ( ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") && ($_FILES["file"]["size"] < 200000 )) // Størrelse under 200Kb
{
move_uploaded_file($_FILES["file"]["tmp_name"], "../images/" . $_FILES["file"]["tmp_name"]);
}
else {
echo "Feil filtype eller størrelse! Bildet må være i filtypen .jpeg, .jpg, .gif eller .png og under 200Kb.<br><a href='history:back'></a>";
return;
}
}

 

Er det noen som ser en umiddelbar feil?

 

All hjelp mottas med takk ;)

Lenke til kommentar
Videoannonse
Annonse

Hva er problemet? Mottar du noen feilmelding? Rar oppførsel? Fortell oss i hvert fall litt da..

 

Ellers så ser jeg umiddelbart at du flytter filen fra tmp_name til images/tmp_name, noe jeg tviler på at du egentlig vil. Jeg tipper du bare ønsker å flytte bildet til mappen images/ med originalnavn. Isåfall må du se på $_FILES['file']['name']. Husk at scriptet også må ha skrivetilgang i mappen.

Endret av Jonas
Lenke til kommentar

Faktisk så ville jeg ha tmp_name, men jeg får prøve å legge inn en annen verdi, da det kom opp for meg at dette kanskje ikke gir filetternavn. Originalnavnet vil jeg egentlig ikke ha, men jeg kan legge inn originalnavnet og legge til ett tilfeldig tall bak.

 

Og ja, jeg mottar den feilmeldingen jeg har lagt inn selv, altså

"Feil filtype eller størrelse! Bildet må være i filtypen .jpeg, .jpg, eller .gif og under 200Kb.". Dette ville vel bety at feilen ligger i denne linjen:

if ( ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") && ($_FILES["file"]["size"] < 200000 ))

 

Grunnen til at jeg ikke gå mer info, var vel strengt tatt at jeg var trøtt og burde lagt meg, mtp at jeg skulle opp og på skolen i syv-tiden :p

Lenke til kommentar

Vel, da er det ganske åpenbart: Filen er verken av type image/jpg eller image/jpeg, eller så er den større enn 200 KB.

 

Edit: Vil samtidig anbefale å benytte paranteser på en litt annen måte. Med mindre du er 100% sikker på presedensen til operatørene, så vil du observere ganske rar oppførsel.

 

if ( ( $_FILES["file"]["type"] == "image/jpeg" || $_FILES["file"]["type"] == "image/jpg" ) && ( $_FILES["file"]["size"] < 200000 )

Endret av Jonas
Lenke til kommentar
Gjest Slettet-rXRozPkg

For en kjapp debugging kan du legge til dette f.eks. før du kjører if($_FILES[blabla][type]):

 

var_dump($_FILES["file"]["type"])."<br />";

var_dump($_FILES["file"]["size"])."<br />";

die();

 

Hvis du sier hva som kommer ut da, så blir det lettere å hjelpe deg videre.

Lenke til kommentar

Heh, jeg gjorde som du sa, lumted, og fikk ut NULL NULL. Regner med at det betyr at den ikke finner noen fil, som den da selvfølgelig ikke kan sjekke filtype eller størrelse på.

 

Jeg kjører nå en test med enctype="multipart/form-data" i form-taggen ;) Krysser fingrene for at dette er problemet...

 

EDIT: Jada! Da er problemet løst, og uten så altfor mye bruk av facepalm :p

<form>-taggen skal altså se slik ut hvis man vil laste opp filer:

<form id="postform" method="post" action="postarticle.php" enctype="multipart/form-data">

Endret av Araho
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...