Witam, mam formularz w którym są pola tekstowe i pole z uploadem plików. Wszystko działało zanim dodałem ajaxa, żeby działało bez przeładowywania strony.
Wszystkie zmienne zapisują się do bazy mysql oprócz tej z nazwą wgrywanego pliku $filename_hash.$file_name[$key]
- wartość jest pusta
Ajaxa sobie wziełem z gotowca formularza, więc nie wiem co tam wszystko oznacza. Bez ajaxa wszystko hula
Form:
<form enctype="multipart/form-data" id="contactForm" role="form" method="post" action="inquiry.php">
Input:
<input type="file" class="custom-file-input" name="image[]" multiple="">
Submit:
<input class="btn btn-block btn-round btn-d" id="cfsubmit" type="submit" value="Wyślij zapytanie"></button>
</div>
</form>
<div class="ajax-response font-alt" id="contactFormResponse"></div>
</div>/
Kod ajax na przycisk wysyłania:
$("#contactForm").submit(function (e) {
e.preventDefault();
var $ = jQuery;
var postData = $(this).serializeArray(),
formURL = $(this).attr("action"),
$cfResponse = $('#contactFormResponse'),
$cfsubmit = $("#cfsubmit"),
cfsubmitText = $cfsubmit.text();
$cfsubmit.text("Wysyłanie...");
$.ajax({
url: formURL,
type: "POST",
data: postData,
success: function (data) {
$cfResponse.html(data);
$cfsubmit.text(cfsubmitText);
$('#contactForm input[name=name]').val('');
$('#contactForm input[name=email]').val('');
$('#contactForm textarea[name=message]').val('');
},
error: function (data) {
alert("Error occurd! Please try again");
}
});
return false;
});
Kod inquiry.php
if(isset($_FILES['image'])){
$errors= array();
$file_name = $_FILES['image']['name'];
$file_size =$_FILES['image']['size'];
$file_tmp =$_FILES['image']['tmp_name'];
$file_type=$_FILES['image']['type'];
$extensions= array("jpeg","jpg","png", "webp", "pdf");
foreach($file_name as $key => $value){
$tmp = explode('.',$_FILES['image']['name'][$key]);
$file_ext = strtolower(end($tmp));
if(in_array($file_ext,$extensions)=== false){
$errors[]="Rozszerzenie niedozwolone.";
}
if($file_size[$key] > 2097152){
$errors[]='Plik nie może być większy niż 2 MB.';
}
}
if(empty($errors)==true){
foreach($file_name as $key => $value){
$filename_hash = bin2hex(random_bytes(16));
move_uploaded_file($file_tmp[$key],"uploads/".$filename_hash.$file_name[$key]);
echo "Pliki poprawnie wysłane!";
}
}
else{
print_r($errors);
}
$sql = "insert into zlecenia(imie,email,nazwa,nrelementu,gruboscblachy,gatunekblachy,szerokosc,dlugosc,ilosc,jakosc,rysunek,uwagi,uploadslink) values('$imie','$email','$nazwa','$nrelementu','$gruboscblachy','$gatunekblachy','$szerokosc','$dlugosc','$ilosc','$jakosc','$rysunek','$uwagi','$filename_hash.$file_name[$key]')";