Hallo,

Ik zoek naar een manier om meerdere bestanden tegelijk te kunnen uploaden, na wat te googlen kwam ik uit op:

for($x = 0; $x < count($files['name']); $x++) {

$name = $files['name'][$x];
$tmp_name = $filess['tmp_name'][$x];
}


Echter werkt dit niet op de manier waarop ik het gebruik. Heeft iemand een oplossing zodat het wel werkt?
Het gaat er niet om dat het veilig is, dat ga ik nog aanpassen met een wachtwoord overigens wordt het niet op een grote openbare site gebruikt.

Bestanden kiezen - Upload - Meerdere bestanden in de map



Mijn basiscode:
<?php
if (isset($_FILES['image'])) {
$errors = array();
$allowed_ext = array('jpg', 'jpeg', 'png', 'gif', 'txt');

$file_name = $_FILES ['image'] ['name'];
$value = explode(".", $file_name);
$file_ext = strtolower(array_pop($value));
$file_size = $_FILES ['image'] ['size'];
$file_tmp = $_FILES ['image'] ['tmp_name'];

if (in_array($file_ext, $allowed_ext) === false) {
$errors[] = "Extension not allowed";
}
if ($file_size > 5242880) {
$errors[] = "File size must be under 5mb";
}
if (empty($errors)) {
if (move_uploaded_file($file_tmp, "uploads/" .$file_name)) {
echo "File uploaded";
}
} else {
foreach ($errors as $error) {
echo $error, "<br />";
}
}

}
?>

<form action="" method="POST" enctype="multipart/form-data">
<p>
<input type="file" name="image"/>
<input type="submit" value="Upload"/>
</p>

</form>

En mijn probeersel wat gebruikt maakt van de bovenste quote:
<?php
if (isset($_FILES['image'])) {

$files = $_FILES['image'];

for($x = 0; $x < count($files['name']); $x++) {
$errors = array();
$allowed_ext = array('jpg', 'jpeg', 'png', 'gif', 'txt');

$file_name = $_FILES ['image'] ['name'];
$value = explode(".", $file_name);
$file_ext = strtolower(array_pop($value));
$file_size = $_FILES ['image'] ['size'];
$file_tmp = $_FILES ['image'] ['tmp_name'];

if (in_array($file_ext, $allowed_ext) === false) {
$errors[] = "Extentie niet toegestaan";
}
if ($file_size > 5242880) {
$errors[] = "Het bestand moet groter zijn dan 5mb";
}
if (empty($errors)) {
if (move_uploaded_file($file_tmp, "uploads/" .$file_name)) {
echo "Bestand geupload";
}
} else {
foreach ($errors as $error) {
echo $error, "<br />";
}
}
}
}
?>

<form action="" method="POST" enctype="multipart/form-data">
<p>
<input type="file" name="image" multiple>
<input type="submit" value="Upload"/>
</p>

</form>

Twee dingen:
- De file input moet er zo uit zien:

<input type="file" name="image[]" multiple="multiple">


Die [] zorgt er voor dat $_FILES['image'] een array wordt. Meerdere bestanden -> meerdere gegevens nodig in een array.
Die multiple zorgt er voor dat je meerdere bestanden kan selecteren.

---
- De array verschijnt niet, zoals je kan verwachten, zo:
<?php
$_FILES['image'][0] = array('name' => 'foo.jpg', 'size' => 2365 ...)
$_FILES['image'][1] = array('name' => 'bar.jpg', 'size' => 3654 ...)
...
?>

Maar wel zo:
<?php
$_FILES['image']['name'] = array(0 => 'foo.jpg', 1 => 'bar.jpg');
$_FILES['image']['size'] = array(0 => 2365, 1 => 3654);
...
?>

Dus, als je een for-lus wil, moet je bij voorbeeld zo iets doen:
<?php
for($x = 0; $x < count($_FILES['image']['name']); $x++) {
$file_name = $_FILES['image']['name'][$x];
$file_size = $_FILES['image']['size'][$x];
...
}
?>

--
o ja ...
"Het bestand moet groter zijn dan 5mb"
Je bedoelt kleiner.
Ik zal er nu even naar kijken, bedankt voor de hulp!

Reageren