I'm trying to make a multi file uploader.
I'm using "Multiple File Upload Magic With Unobtrusive Javascript"None of the files upload. I'm pretty sure this is because it's putting the files into a array and I don't have my php set to handle the array (which I don't know how to do). Any help on what I'm doing wrong?
Thanks in advance! :)
JQUERY CODE
$(document).ready(function(){
var fileMax = 12;
$('#element_input').after('<div id="files_list"></div>');
$("input.upload").change(function(){
doIt(this, fileMax);
});
});
function doIt(obj, fm) {
if($('input.upload').size() > fm) {alert('Max files is '+fm); obj.value='';return true;}
$(obj).hide();
$(obj).parent().prepend('<input type="file" class="upload" name="fileX[]" />').find("input").change(function() {doIt(this, fm)});
var v = obj.value;
if(v != '') {
$("div#files_list").append('<div>'+v+'<input type="button" class="remove" value="" /></div>')
.find("input").click(function(){
$(this).parent().remove();
$(obj).remove();
开发者_StackOverflow return true;
});
}
};
HTML CODE
<form action="myPhpCodeIsBelow.php" method="post" enctype="multipart/form-data" name="asdf" id="asdf">
<div id="mUpload">
<input type="file" id="element_input" class="upload" name="fileX[]" />
<input type="submit" value="Upload" />
</div>
</form>
PHP CODE
$target = "upload/";
$target = $target . $_FILES['fileX']['name'];
$ok=1;
if(move_uploaded_file($_FILES['fileX']['tmp_name'], $target)) {
echo "The file " . $_FILES['fileX']['name'] . " has been uploaded";
}
else {
echo "There was a problem uploading" . $_FILES['fileX']['name'] . ". Sorry";
}
The $_FILES
array actually looks like this:
array (
'fileX' =>
array (
'name' =>
array (
0 => '',
1 => 'Temp1.jpg',
2 => 'Temp2.jpg',
),
'type' =>
array (
0 => '',
1 => 'image/jpeg',
2 => 'image/jpeg',
),
'tmp_name' =>
array (
0 => '',
1 => '/tmp/php52.tmp',
2 => '/tmp/php53.tmp',
),
'error' =>
array (
0 => 4,
1 => 0,
2 => 0,
),
'size' =>
array (
0 => 0,
1 => 83794,
2 => 105542,
),
),
)
That means your code should look more like this:
foreach($_FILES['fileX']['name'] as $index => $name) {
if(empty($name)) continue;
$target = "upload/";
$target = $target . $name;
$ok=1;
if(move_uploaded_file($_FILES['fileX']['tmp_name'][$index], $target))
{
echo "The file " . $name . " has been uploaded";
}
else
{
echo "There was a problem uploading" . $name . ". Sorry";
}
}
And you should learn to indent your code better!
精彩评论