webForumDet fria alternativet

Problem med att ladda upp fler bilder på samma gång?

PHP

8 svar · 602 visningar · startad av Dr-man

Medlem sedan juli 2002732 inlägg
Frågan#1

Jag försöker ladda upp fler bilder på samma gång med hjälp av flera input-fält. Men får följande felmeddelande med koden nedanför.

Variable passed to each() is not an array or object in /var/www/fs1/6/admin/edit2.php on line 86
while(list($key,$value) = each($_FILES['userfile']['name']))
 
  if (is_uploaded_file($_FILES['userfile']['tmp_name'])){
   if (eregi(".jpg$", $_FILES['userfile']['name'])){
    if (file_exists($_FILES['userfile']['name'])){
       echo " <script type=\"text/javascript\">
        alert('Det finns redan en bild med samma namn!');
       </script>";
    }
    else{
      $imagefile = $dir."/".$_FILES['userfile']['name'];
      $thumb = $dir."/".$id.$_FILES['userfile']['name'];
      $imagefile2 = $_FILES['userfile']['name'];
     copy($_FILES[userfile][tmp_name][$key], $value);
      // move_uploaded_file($_FILES['userfile']['tmp_name'], $imagefile);
      // imagecreatethumb($thumb, $imagefile, NULL, NULL, NULL, 7;
      $picture=$imagefile2;
      $query = "insert into photos(photoid, picture, pictext, pictextfin, photoidfin) values('".$photoid."','".$picture."','".$pictext."','".$pictextfin."','".$photoidfin."')";
      mysql_query($query,$link);
      $query = "select * from photos where photoid='$photoid'";
      $result4 = mysql_query($query,$link);
 
      $query2 = mysql_query("select * from photos where photoid='$photoid'");
      $result5 = mysql_num_rows($query2);
    }
  }
  else{
    echo " <script type=\"text/javascript\">
    alert('Det går endast att ladda upp bilder i jpeg-format!');
    </script>";
  }
 }
?>

Kan nån hjälpa?

Medlem sedan maj 20011 826 inlägg
#2

Precis som ditt felmeddelande säger så är ju argumentet till each() inte en array.

Medlem sedan juli 2002732 inlägg
#3

Jag har gjort om koden, nu får jag inga felmeddelanden, men tyvärr så flyttas inga bilder över till servern. Kan nån hjälpa?

Här är koden för själva överflyttningen av bilder.

foreach ($_FILES["userfile"]["error"] as $key => $error) {
      if ($error == UPLOAD_ERR_OK) {
        if (file_exists($_FILES['userfile']['name'])){
          echo " <script type=\"text/javascript\">
          alert('Det finns redan en bild med samma namn!');
          </script>";
        }   
        
        $imagefile = $dir."/".$_FILES['userfile']['tmp_name'][$key];;
        $name = $_FILES["userfile"]["name"][$key];
        move_uploaded_file($tmp_name, "data/$name");
        //move_uploaded_file($_FILES['userfile']['tmp_name'], "data/$imagefile");
        $imagefile2 = $_FILES['userfile']['name'][$key];
        $picture=$imagefile2;
        $query = "insert into photos(photoid, picture, pictext, pictextfin, photoidfin) values('".$photoid."','".$picture."','".$pictext."','".$pictextfin."','".$photoidfin."')";
        echo "Query", $query;
        mysql_query($query,$link);
       } 
       $query = "select * from photos where photoid='$photoid'";
       $result4 = mysql_query($query,$link);
 
       $query2 = mysql_query("select * from photos where photoid='$photoid'");
       $result5 = mysql_num_rows($query2);
    }
  }

Här är koden för själva formuläret.

<?php
 
$max_no_img=10;
 
echo "<form method=post action=edit2.php enctype='multipart/form-data'>";
echo "<table border='0' width='400' cellspacing='0' cellpadding='0' align=center>";
for($i=1; $i<=$max_no_img; $i++){
echo "<tr><td>Images $i</td><td>";?>
 
<input type="file" name="userfile[]"><br /> <br /></td></tr>
<?php }?>
<input type="hidden" value="1" name="acheck">
<input type="hidden" value="<?php echo $data3["id"] ?>" name="edit">
<input type="hidden" value="<?php echo $data3["photoid"] ?>" name="photoid">
<input type="hidden" value="<?php echo $data3["description"] ?>" name="description">
<input type="hidden" value="<?php echo $data3["photoidfin"] ?>" name="photoidfi">
<input type="hidden" value="<?php echo $data3["descriptionfin"] ?>" name="descriptionfin">
<tr><td colspan=2 align=center><input type=submit value='Lägga till'></td></tr>
</form> </table>
Medlem sedan feb. 20034 441 inlägg
#4

Du använder move_uploaded_file tillsammans med en variabel $tmp_name, men du sätter aldrig något värde på $tmp_name..

Medlem sedan aug. 20068 090 inlägg
#5

Jag lägger mig i lite.
Det finns en hel del färdiga skripter och tutorials därute:
http://clusty.com/search?input-form=clusty-simple&v%3Asources=webplus&query=php+multiple+file+upload

Donade själv med detta för nåt år sen. Under projektets gång snubblade jag på några andra varianter med java applets som kanske kan intressera. Bifogas....

Medlem sedan feb. 20034 441 inlägg
#6

När vi ändå är inne på tips kan jag rekommendera den här som jag blivit fullständigt kär i:
http://digitarald.de/project/fancyupload/3-0/showcase/photoqueue/

Riktigt snyggt, man kan t.o.m ta bort/lägga till filer under tiden de laddas upp.

Medlem sedan maj 20011 826 inlägg
#7

MickeA.com skrev:

När vi ändå är inne på tips kan jag rekommendera den här som jag blivit fullständigt kär i:
http://digitarald.de/project/fancyupload/3-0/showcase/photoqueue/

Riktigt snyggt, man kan t.o.m ta bort/lägga till filer under tiden de laddas upp.

Åh, den där var ju grym ;)

Medlem sedan juli 2002732 inlägg
#8

MickeA.com skrev:

När vi ändå är inne på tips kan jag rekommendera den här som jag blivit fullständigt kär i:
http://digitarald.de/project/fancyupload/3-0/showcase/photoqueue/

Riktigt snyggt, man kan t.o.m ta bort/lägga till filer under tiden de laddas upp.

Fungerar detta också med Vista IE 8?

Medlem sedan feb. 20034 441 inlägg
#9

Dr-man skrev:

Fungerar detta också med Vista IE 8?

Varför provar du inte själv istället för att fråga? Länken finns ju där...

257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)