webForumDet fria alternativet

Problem med bilduppladdning

PHPur PHP

5 svar · 494 visningar · startad av Guldstrand

Medlem sedan juli 20041 271 inlägg
Frågan#1

Ber om ursäkt för en dålig "rubrik". :r

Nu till mitt lilla problem...
Jag FÖRSÖKER att använda följande kod för att skapa och spara en bild i två olika storlekar.

///// SKAPA OCH SPARA BILD 

require("inc/create_thumb.php");

if(isset($_FILES['userfile']))
{
 
   $userfile_name = str_replace(" ","_",$_FILES['userfile']['name']);
   $userfile_tmp = str_replace(" ","_",$_FILES['userfile']['tmp_name']);

   $userfile_size = $_FILES['userfile']['size'];
   $userfile_type = $_FILES['userfile']['type'];
 
   $userfile_thumb_name = str_replace(" ","_",$_FILES['userfile']['name']);
   $userfile_thumb_tmp = str_replace(" ","_",$_FILES['userfile']['tmp_name']);

   
  // mappen där filerna ska hamna
  $thumb_upload_dir = 'images/personer/miniatyr/';
  $thumb_upload_dir2 = 'images/personer/';
  
  // de tillåtna fil-typerna
  $filetypes = 'jpg,jpeg,png';
  // den största tillåtna storleken ( 1000 kB )
  $maxsize = (1024*20000);
  
  // kolla storleken på filen
  if($_FILES['userfile']['size'] > $maxsize)
       die("Tillåten filstorleken är '.round($maxsize / 1024).' kB.<br />");
  
  // hämta filtypen
  $types = explode(',',$filetypes);
  $file = explode('.',$_FILES['userfile']['name']);
  $extension = $file[sizeof($file)-1];

  // kolla filtypen
  if(!in_array($extension,$types))
       die("Endast $filetypes är tillåtet att laddas upp.<br />");

$insandare1 = minhemsida."_";

if (file_exists($thumb_upload_dir.$insandare1.str_replace(" ","_",$_FILES['userfile']['name'])))
       die("En bild med samma namn finns redan.<br />");

// Gör första tumnageln
  thumb_pic(str_replace(" ","_",$_FILES['userfile']['tmp_name']), $thumb_upload_dir.$insandare1.str_replace(" ","_",$_FILES['userfile']['name']), 120, 200);

// Gör andra tumnageln
  thumb_pic(str_replace(" ","_",$_FILES['userfile']['tmp_name']), $thumb_upload_dir2.$insandare1.str_replace(" ","_",$_FILES['userfile']['name']), 600, 400); 

}

/////

Koden i sig, fungerar som den ska, men jag vill endast att koden skall köras OM man väljer all ladda upp en bild, inte annars. *hmm.. kändes lite luddigt detdär*

Alltså... jag har ett formulär där man kan fylla i lite info om sig själv, namn, ålder m.m.
Men som det är nu (med koden ovan), så MÅSTE man även ange en bild.
(Vill att detta skall vara frivilligt.)

Hur löser jag det?

Som det är nu, så får jag bara "Endast jpg,jpeg,png är tillåtet att laddas upp.", fast att jag INTE väljer att ladda upp någon bild.

Medlem sedan juli 20023 617 inlägg
#2

Med viss osäkerhet om hur $_FILES beter sig...

Testa att byta ut

if(isset($_FILES['userfile']))

mot

if(!empty($_FILES['userfile']))
Medlem sedan juli 20041 271 inlägg
#3

fiddler skrev:

Med viss osäkerhet om hur $_FILES beter sig...

Testa att byta ut

if(isset($_FILES['userfile']))

mot

if(!empty($_FILES['userfile']))

Tack för ditt svar, men det hjälpte tyvärr inte. :(

EDIT: Testade även att byta till "if(isset($_POST['userfile']))", men då laddas inte bilden upp. :x

Medlem sedan mars 20007 896 inlägg
#4
if($_FILES['userfile']['size'] > 0)
...
Medlem sedan juli 20041 271 inlägg
#5

SPiN skrev:

if($_FILES['userfile']['size'] > 0)
...

YEEEEEEEES... det verkade fungera.
Är detta ett bra sätt att göra det på? :q

Medlem sedan mars 20007 896 inlägg
#6

Ja, det tycker jag. Du borde kunna se om någon fil är uppladdad med is_uploaded_file() också;

if(is_uploaded_file($_FILES['userfile']['tmp_name']))
...

Om du tycker det känns bättre.

134 ms totalt · 3 externa anrop · v20260731065814-full.232057fb
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)