Vraag & Antwoord

Webprogrammeren & scripting

[PHP]Meerdere bestanden uploaden

7 antwoorden
  • Ik ben m'n upload script aan het testen, het is de bedoeling dat je meerdere afbeeldingen tegelijk kunt uploaden maar ik blijf steken bij m'n if statement en krijg steeds "Error" als uitvoer. De foreach-array werkt wel maar ik weet niet wat ik fout heb staan in m'n if (is_uploaded_file) statement [code:1:726de70bb6] <? include ("config.php"); $faid=$_REQUEST['faid']; print_r ($afbeelding); if ($_POST['knop']) { $pad = "/www/foto/"; foreach($afbeelding AS $naam => $nummer) { if (is_uploaded_file($_FILES["afbeelding"]["tmp_name"][$nummer])) { if($_FILES["afbeelding"]["size"][$nummer]>1500000) {echo "Het bestand is te groot!"; } else {echo "Het bestand is geaccepteerd!";} } else { echo "<br>Error"; } } echo "<br>{sql}foreach($afbeelding AS $naam => $nummer) {/sql}<br>"; print_r ($afbeelding); } else { $sql="SELECT * FROM p_fotoalbum"; $resultaat = mysql_query($sql); if (mysql_num_rows($resultaat)>0) { ?><form enctype="multipart/form-data" method="post" action ="upload3.php"> <select name = "faid"> <? while($rij = mysql_fetch_array($resultaat)) { echo "<option value=\""; echo $rij["faid"]."\">"; echo $rij["naam"]."</option>\n"; } ?> </select><br><br> <input type = "hidden" name="MAX_FILE_SIZE" value="1500000"> Upload afbeelding:</b><br> <input name="afbeelding[]" type="file"><br> <input name="afbeelding[]" type="file"><br> <input type = "submit" value="verzend" name="knop"> </form> <? } } ?> [/code:1:726de70bb6]
  • Begin eens met uitprinten van de inhoud van $_FILES...
  • de uitvoer word dan: {sql}(Array(['afbeelding']['tmp_name'][/tmp/phpTOwA3h])){/sql}
  • [quote:b973b9baa6="sjemmie"] [code:1:b973b9baa6] <input name="afbeelding[]" type="file"><br> <input name="afbeelding[]" type="file"><br> [/code:1:b973b9baa6][/quote:b973b9baa6] Ik zie daar twee keer de naam "afbeelding" voorkomen. Geef ze eens elk een unieke naam. En volgens mij zijn de []-tekens ongeldig in objectbenamingen.
  • maar als ik dat doe dan werkt de hele foreach-functie toch niet meer ? aangezien je daar gegevens in rijen mee ophaalt , middels die haken uit het formulier? of zit ik er naast ?
  • [quote:4a74c892ed="sjemmie"]maar als ik dat doe dan werkt de hele foreach-functie toch niet meer ? aangezien je daar gegevens in rijen mee ophaalt , middels die haken uit het formulier? of zit ik er naast ?[/quote:4a74c892ed] Je kan toch door $_FILES heen lopen? Als je maar op één manier en één soort afbeelding kunt uploaden dan heb je de variabelenaam 'afbeelding' alleen nodig ter controle. En waar wordt $afbeelding in jouw code geinitialiseerd?
  • bedankt h4xX0r, ik heb er unieke namen aan gegeven en die foreach - functie vervangen door een while loop, en het werkt :D ... deels formulierdeel [code:1:f7d8b51737] <input type = "hidden" name="MAX_FILE_SIZE" value="1500000"> Upload afbeelding:</b><br> <? $i=1; while($i<=5) {echo "<input name=\"afbeelding$i\" type=\"file\"><br>";$i++;} ?> <input type = "submit" value="verzend" name="knop"> </form> <?[/code:1:f7d8b51737] code [code:1:f7d8b51737]<? include ("config.php"); $faid=$_REQUEST['faid']; $afbeelding1=$_REQUEST['afbeelding1']; $afbeelding2=$_REQUEST['afbeelding2']; $afbeelding3=$_REQUEST['afbeelding3']; $afbeelding4=$_REQUEST['afbeelding4']; $afbeelding5=$_REQUEST['afbeelding5']; //print_r ($afbeelding); if ($_POST['knop']) { $pad = "/www/foto/"; $i=1; while($i<=5) { if (is_uploaded_file($_FILES["afbeelding$i"]["tmp_name"])) { if($_FILES["afbeelding$i"]["size"]>1500000) {echo "Het bestand is te groot!"; } else {echo "Het bestand is goed genoeg!";} if (!ereg("((.gif|.jpg|.JPG|.GIF)$)",$_FILES['afbeelding$i']['tmp_name'],$extensie)) {echo "Het bestand bevat niet de juiste afbeeldingstype";} else {echo "Het bestand bevat de juiste afbeeldingstype";} $extensie=$extensie[0]; $sql = "insert into p_afbeelding (faid, bestandstype) values($faid, '$extensie')"; if (!mysql_query($sql)) {echo "het bijwerken van de database is mislukt";} else {echo "Het bijwerken van de database is gelukt";} } else { echo "<br>foutje"; } $i++;} }[/code:1:f7d8b51737] Ik heb m'n upload systeem iets uitgebreid om meer dingen te testen: De bestandsgrootte check gaat goed. De invoering in de database gaat goed maar op de een of andere manier word de bestandstype niet geaccepteerd. Ik zie niet waarom dat niet gaat. Ik krijg steeds als uitvoer:""Het bestand bevat niet de juiste afbeeldingstype. " terwijl dat het wel is. Ook als ik :['afbeelding$i']['tmp_name'], wijzig in ['afbeelding']['name'] krijg ik hetzelfde. In m'n database word er ook geen bestandtype ingevoerd. Daarbij vraag ik me af hoe je het beste om kunt gaan met lege velden. Wanneer een veld leeg is krijg ik uitvoer :"foutje" op het scherm (ter controle). Bij de overige ingevulde velden gaat het ook goed, op dat bestandstype controlle na, maar hoe kun je lege velden het beste goed afhandelen ?

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.