Wgrywanie plików ajax pusta zmienna nazwy pliku |
Wgrywanie plików ajax pusta zmienna nazwy pliku |
15.08.2022, 11:19:58
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 15.08.2022 Ostrzeżenie: (0%) |
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 - wartość jest pusta Kod $filename_hash.$file_name[$key] Ajaxa sobie wziełem z gotowca formularza, więc nie wiem co tam wszystko oznacza. Bez ajaxa wszystko hula Zmieniłem Kod var postData = $(this).serializeArray(), na Kod var postData = new FormData(this), bez skutkuForm: Kod <form enctype="multipart/form-data" id="contactForm" role="form" method="post" action="inquiry.php"> Input; Kod <input type="file" class="custom-file-input" name="image[]" multiple=""> Submit: Kod <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: Kod $("#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 php inquiry.php Kod 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,il osc,jakosc,rysunek,uwagi,uploadslink) values('$imie','$email','$nazwa','$nrelementu','$gruboscblachy','$gatunekblachy','$szerokosc','$dlugosc','$ilosc','$jakosc','$rysunek','$uwagi','$filename_hash.$file_name[$key]')"; |
|
|
15.08.2022, 11:50:30
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 519 Pomógł: 6308 Dołączył: 27.12.2004 |
Tylko czemu to jest w dziale php? Przenosze.
Ajaxem od tak nie wyslesz pliku, musisz troche pokombinowac. FormData dziala, ale tam musisz fizycznie dodac plik. tutaj masz przyklad: https://makitweb.com/how-to-upload-image-fi...jax-and-jquery/ -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
Wersja Lo-Fi | Aktualny czas: 25.09.2024 - 17:37 |