Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wgrywanie plików ajax pusta zmienna nazwy pliku
Glowasz
post 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 skutku

Form:
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]')";
Go to the top of the page
+Quote Post
nospor
post 15.08.2022, 11:50:30
Post #2





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
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

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 00:42