11. september 2006 - 23:30
Der er
9 kommentarer og 1 løsning
Lille fejl i multiupload
Hej eksperter, Efter mange timers søgen og lidt frem og tilbage her på eksperten er jeg nu blevet det klogere og jeg ønsker en der lige kan hjælpe mig med en lille fejl her. Tag jer ikke af første kode at den er lidt lang, bare se i toppen efter de væsentligste ting. Upload koden: //Upload if ($_POST['action'] == "addpic" && isset($_FILES['userfile'])) { foreach ($_FILES['userfile'] as $file) { if ($_FILES['userfile']['name'] != "") { if (($_FILES['userfile']['type'] == "image/pjpeg") || ($_FILES['userfile']['type'] == "image/jpeg")) { $tempnavn = str_replace("æ", "ae", $_FILES['userfile']['name']); $tempnavn = str_replace("ø", "oe", $tempnavn); $tempnavn = str_replace("å", "aa", $tempnavn); $filnavn = str_replace(" ", "_", $tempnavn); $gemfil = "temp/".$filnavn; if (!@move_uploaded_file($_FILES['userfile']['tmp_name'], $gemfil)) { echo "Billedet kunne ikke gemmes.<br>\n"; } else { $pic1 = ImageCreateFromJPEG($gemfil); $sizeX = ImageSX($pic1); $sizeY = ImageSY($pic1); $pic2 = ImageCreateFromGIF("images/fotologo.gif"); $lsizeX = ImageSX($pic2); $lsizeY = ImageSY($pic2); // Udregn hvor billedet skal placeres (nederste højre hjørne her) $posX = $sizeX - $lsizeX; $posY = $sizeY - $lsizeY; // Indsæt logo med 80% blanding ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 100); $wscale = 600 / $sizeX; $hscale = 450 / $sizeY; $scale = ( $hscale < $wscale ? $hscale : $wscale ); $nw = round( $sizeX * $scale, 0 ); $nh = round( $sizeY * $scale, 0 ); $dstim = imagecreatetruecolor( $nw, $nh ); imagecopyresampled( $dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $sizeX, $sizeY ); // Gem billede ImageJPEG($dstim, "fotos/".$_POST["select"]."/".$filnavn, 100); // Ryd op (inkl. sletning af midlertidig fil) ImageDestroy($pic1); ImageDestroy($pic2); unlink($gemfil); echo "<font face='arial' size='2' color='666666'><center>Billedet blev gemt!</center></font><br>\n"; $db->ExecSQL("INSERT INTO snm_galleri (galleri,billede)VALUES('".$_POST["select"]."','".$_POST["select"]."/".$filnavn."')"); echo "<script language='Javascript'> alert ('Billedet er uploadet!') </script>"; echo "<script> location = 'admin_billeder.php' </script>"; } } } } } else { Her nede har jeg så input felterne: <form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> <input type="hidden" name="action" value="addpic"> <input type="hidden" name="MAX_FILE_SIZE" value="1024000"> <table width="500" border="0" cellpadding="2" cellspacing="0" class="none"> <tr> <td width="124"> <font color="99D122" size="2" face="arial" class="header"><b>Galleri</b></font><font class="header">:</font> </td> <td width="368"><select name="select" class="textfield"> <? for($i=0;$i<count($galleri);$i++) print_r ("<option>".$galleri[$i][3]."</option>"); ?> </select></td> </tr> <tr> <td><font face="arial" size="2" color="99D122"><b>Billede</b></font>:</td> <td><input type="file" name="userfile[]"></td> </tr> <tr> <td><font face="arial" size="2" color="99D122"><b>Billede</b></font>:</td> <td><input type="file" name="userfile[]"></td> </tr> <tr> <td> </td> <td><input name="submit" type="submit" value="Upload"></td> </tr> </table> </form> Beklager i fik hele tabel koden med. Jeg kan sagtens se upload siden, men når jeg uploader går den til hvid skærm. Men det sjove er at hvis jeg ændrer <input type="file" name="userfile[]"> til <input type="file" name="userfile"> så får jeg ikke hvid skærm, men jeg kan så kun også uploade 1 til af gangen. jeg havde ikk troet fejlen lå her? Hvad gør jeg galt?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
12. september 2006 - 09:05
#1
Du angiver ikke hviklen fil der skal oploades... de forskellige steder skal angives hvilken key der skal benyttes... fx nedestående linie: if (!@move_uploaded_file($_FILES['userfile']['tmp_name'], $gemfil)) { skal rettes til: if (!@move_uploaded_file($_FILES['userfile']['tmp_name'][$file], $gemfil)) {
12. september 2006 - 09:06
#2
prøv at skrive nedenstående i toppen af din fil, så kan du se hvad file-arrayet indeholder: <? echo"<pre>"; print_r($_FILES['userfile']); echo"</pre>"; ?>
12. september 2006 - 14:35
#3
så er det ændret. den uploader desværre ikke, men jeg får det her udskrevet nu: Array ( [name] => Array ( [0] => Bjergtoppe.jpg [1] => Solnedgang.jpg ) [type] => Array ( [0] => image/pjpeg [1] => image/pjpeg ) [tmp_name] => Array ( [0] => /tmp/phpgMAdyS [1] => /tmp/phpAeb2Dz ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 28521 [1] => 71189 ) hvor er det mere jeg skal have rettet til så?
12. september 2006 - 15:05
#4
eller dvs. da jeg skrev at jeg havde ændret havde jeg kun ændret den ene linje du gav som eksempel.
12. september 2006 - 15:08
#5
.. kan jeg få dig til at vise de andre steder?
12. september 2006 - 17:00
#6
jamen alle de steder du bruger $_FILES-arrayet skal du have tilføjet [$file] for at tilgå den rigtige fil, og så også tilpasse at den ikke gemmer i samme fil hver gang, men gemmer hver enkelt fil hver for sig
12. september 2006 - 17:12
#7
så har jeg så: <? session_start(); include("db_con.php"); $query = $db->SendSQL("SELECT * FROM snm_bruger WHERE brugernavn='".$_SESSION["brugernavn"]."' AND password='".$_SESSION["password"]."'"); $s_brugernavn = $query[0][0]; $s_password = $query[0][1]; $galleri = $db->SendSQL("SELECT * FROM snm_gallerioverskrift"); if ($_SESSION["brugernavn"] !== "$s_brugernavn" && $_SESSION["password"] !== "$s_password") { header("Location: admin.php"); exit(); } //Upload if ($_POST['action'] == "addpic" && isset($_FILES['userfile'])) { foreach ($_FILES['userfile'] as $file) { if ($_FILES['userfile']['name'][$file] != "") { if (($_FILES['userfile']['type'][$file] == "image/pjpeg") || ($_FILES['userfile']['type'][$file] == "image/jpeg")) { $tempnavn = str_replace("æ", "ae", $_FILES['userfile']['name'][$file]); $tempnavn = str_replace("ø", "oe", $tempnavn); $tempnavn = str_replace("å", "aa", $tempnavn); $filnavn = str_replace(" ", "_", $tempnavn); $gemfil = "temp/".$filnavn; if (!@move_uploaded_file($_FILES['userfile']['tmp_name'][$file], $gemfil)) { echo "Billedet kunne ikke gemmes.<br>\n"; } else { $pic1 = ImageCreateFromJPEG($gemfil); $sizeX = ImageSX($pic1); $sizeY = ImageSY($pic1); $pic2 = ImageCreateFromGIF("images/fotologo.gif"); $lsizeX = ImageSX($pic2); $lsizeY = ImageSY($pic2); // Udregn hvor billedet skal placeres (nederste højre hjørne her) $posX = $sizeX - $lsizeX; $posY = $sizeY - $lsizeY; // Indsæt logo med 80% blanding ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 100); $wscale = 600 / $sizeX; $hscale = 450 / $sizeY; $scale = ( $hscale < $wscale ? $hscale : $wscale ); $nw = round( $sizeX * $scale, 0 ); $nh = round( $sizeY * $scale, 0 ); $dstim = imagecreatetruecolor( $nw, $nh ); imagecopyresampled( $dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $sizeX, $sizeY ); // Gem billede ImageJPEG($dstim, "fotos/".$_POST["select"]."/".$filnavn, 100); // Ryd op (inkl. sletning af midlertidig fil) ImageDestroy($pic1); ImageDestroy($pic2); unlink($gemfil); echo "<font face='arial' size='2' color='666666'><center>Billedet blev gemt!</center></font><br>\n"; $db->ExecSQL("INSERT INTO snm_galleri (galleri,billede)VALUES('".$_POST["select"]."','".$_POST["select"]."/".$filnavn."')"); echo "<script language='Javascript'> alert ('Billedet er uploadet!') </script>"; echo "<script> location = 'admin_billeder.php' </script>"; } } } } } else { ?> men har ikke gjort noget forskel.
12. september 2006 - 18:58
#8
argh, sorry... $file skal indeholde nummeret, dvs du skal definere $file til 0 ved første kørsel, også lægge en til hver gang: //Upload if ($_POST['action'] == "addpic" && isset($_FILES['userfile'])) { $file = -1; foreach ($_FILES['userfile']) { $file++; $gemfil = "billede" . $file; $filnavn = "billede1_" . $file; if ($_FILES['userfile']['name'][$file] != "") { if (($_FILES['userfile']['type'][$file] == "image/pjpeg") || ($_FILES['userfile']['type'][$file] == "image/jpeg")) { $tempnavn = str_replace("æ", "ae", $_FILES['userfile']['name'][$file]); $tempnavn = str_replace("ø", "oe", $tempnavn); $tempnavn = str_replace("å", "aa", $tempnavn); $filnavn = str_replace(" ", "_", $tempnavn); $gemfil = "temp/".$filnavn; if (!@move_uploaded_file($_FILES['userfile']['tmp_name'][$file], $gemfil)) { echo "Billedet kunne ikke gemmes.<br>\n"; } else { $pic1 = ImageCreateFromJPEG($gemfil); $sizeX = ImageSX($pic1); $sizeY = ImageSY($pic1); $pic2 = ImageCreateFromGIF("images/fotologo.gif"); $lsizeX = ImageSX($pic2); $lsizeY = ImageSY($pic2); // Udregn hvor billedet skal placeres (nederste højre hjørne her) $posX = $sizeX - $lsizeX; $posY = $sizeY - $lsizeY; // Indsæt logo med 80% blanding ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 100); $wscale = 600 / $sizeX; $hscale = 450 / $sizeY; $scale = ( $hscale < $wscale ? $hscale : $wscale ); $nw = round( $sizeX * $scale, 0 ); $nh = round( $sizeY * $scale, 0 ); $dstim = imagecreatetruecolor( $nw, $nh ); imagecopyresampled( $dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $sizeX, $sizeY ); // Gem billede ImageJPEG($dstim, "fotos/".$_POST["select"]."/".$filnavn, 100); // Ryd op (inkl. sletning af midlertidig fil) ImageDestroy($pic1); ImageDestroy($pic2); unlink($gemfil); echo "<font face='arial' size='2' color='666666'><center>Billedet blev gemt!</center></font><br>\n"; $db->ExecSQL("INSERT INTO snm_galleri (galleri,billede)VALUES('".$_POST["select"]."','".$_POST["select"]."/".$filnavn."')"); echo "<script language='Javascript'> alert ('Billedet er uploadet!') </script>"; echo "<script> location = 'admin_billeder.php' </script>"; } } } } } else { ?>
12. september 2006 - 19:44
#9
efter at have copy/paste får jeg bare hvid skærm. der må være en lille fejl et sted
12. september 2006 - 22:21
#10
bruger en anden kode nu, ellers tak for hjælpen.
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.