我使用在ajax中添加更多文件上传多个文件并将其保存在php中的数据库中。但它只插入数据库中的最后一个文件而不是数据库中的多个文件。
HTML代码
<form id="registration_form" method="post" enctype="multipart/form-data">
<input type="file" id="file" name="file[]">
<input type="button" id="add_more" class="upload" value="Add More Files"/>
</form>
AJAX代码
$(document).ready(function() {
// To add new input file field dynamically, on click of "Add More Files" button below function will be executed.
$('#add_more').click(function() {
$(this).before($("
<div id='filediv'/>
").append($("<input name='file[]' type='file' id='file'>"
)));
$.ajax({
url:"update.php",
type:"post",
data: new FormData(this),
contentType:false,
cache:false,
processData:false,
success:function(data)
{
alert(data);
},
failure:function(errormsg)
{
alert(errormsg);
}
});
});`
PHP代码
<!------- Including PHP Script here ------>
<?php if (isset($_POST['submit'])) {
$j = 0; // Variable for indexing uploaded image.
$target_path = "upload/"; // Declaring Path for uploaded images.
for ($i = 0; $i < count($_FILES['file']['name']); $i++) {
// Loop to get individual element from the array
$validextensions = array("jpeg", "jpg", "png"); // Extensions which are allowed.
$ext = explode('.', basename($_FILES['file']['name'][$i])); // Explode file name from dot(.)
$file_extension = end($ext); // Store extensions in the variable.
$target_path = $target_path . $_FILES['file']['name'][$i];
//echo $target_path; die; // Set the target path with a new name of image.
$j = $j + 1; // Increment the number of uploaded images according to the files in array.
if (($_FILES["file"]["size"][$i] < 800000) // Approx. 800kb files can be uploaded.
&& in_array($file_extension, $validextensions)) {
if (move_uploaded_file($_FILES['file']['tmp_name'][$i], $target_path)) {
// If file moved to uploads folder.
echo $j. ').<span id="noerror">Image uploaded successfully!.</span><br/><br/>';
} else { // If File Was Not Moved.
echo $j. ').<span id="error">please try again!.</span><br/><br/>';
}
} else { // If File Size And File Type Was Incorrect.
echo $j. ').<span id="error">***Invalid file Size or Type***</span><br/><br/>';
}
}
} ?>
答案 0 :(得分:0)
您需要附加所有文件以形成数据。试试这个
var data = new FormData();
$.each($("input[type='file']")[0].files, function(i, file) {
data.append('file', file);
});
将此数据变量传递给ajax数据。