Обновить с методом append () и запросом ajax - PullRequest
0 голосов
/ 22 марта 2020

ОБНОВЛЕНИЕ Медленно, постепенно я прогрессирую, поэтому я передумал использовать метод append (). Мой ajax запрос в порядке:

      var arrImg = new FormData();
  for (var i = 0; i < nbFiles; i++) {
    var actualName = $(fromInput)[0].files[i].name;
    if(actualName != valueToDelete){
      imgValue = document.getElementById('image_1').files[i];
      arrImg.append("image[]", imgValue);
    }
  }
  arrImg.append('action','delete_tof');
  arrImg.entries();
  // console.log(arrImg)
  my_url = ajaxurl;
  $.ajax({
    url:my_url,
    data :arrImg,
    contentType: false,
    processData: false,
    method: 'POST',
    success : function(data){ 
      console.log(data);
    },
    error : function( data ) {
        console.log(data)
        alert('Une erreure s\'produite, au moment d\'effacer votre image');
        // location.reload();
    }
  }) 

результат consol.log (data) Результат ajax запроса в порядке

Тогда моя функция php

function delete_tof(){
// Count total files
$countfiles = count($_FILES['image']['name']);

// Upload directory
$upload_location = '/tmp/';

// To store uploaded files path
$files_arr = array();

// Loop all files
for($index = 0;$index < $countfiles;$index++){

   // File name
   $filename = $_FILES['image']['name'][$index];

   // Get extension
   $ext = pathinfo($filename, PATHINFO_EXTENSION);

   // Valid image extension
   $valid_ext = array("png","jpeg","jpg");

   // Check extension
   if(in_array($ext, $valid_ext)){

     // File path
     $path = $upload_location.$filename;

     // Upload file
     if(move_uploaded_file($_FILES['image']['tmp_name'][$index],$path)){
        $files_arr[] = $path;
     }
   }

}
echo json_encode($files_arr);
wp_die(); 

}

И vardump $ _FILES и $ files_arr в порядке

vardump $ _FILES в функции в порядке

Но я не понимаю, почему, когда я отправляю свою оригинальную форму, у меня все еще неправильное количество файлов?

Следующая первая попытка, но список файлов не обновляется, поэтому я оставил эту попытку

Я пытаюсь обновить список файлов в javascript Я создаю массив данных изображения, как что

  var arrImg = [];
  for (var i = 0; i < nbFiles; i++) {
      imgValue = $(fromInput)[0].files[i];
      arrImg.push(imgValue);
  }

С этим l oop у меня есть то, что мне нужно для обновления FileList.

Мой массив данных

Проблема после для обновления списка файлов.

Я обнаружил, что:

Функция для списка обновлений

Но я не могу приспособить ее к моей проблеме. Я пробовал разные вещи, такие как

arrImg.push(new File(imgValue)); //In the loop 

затем

$(fromInput).arrImg = FileListItem(arrImg)

Но безуспешно, потому что отсутствует аргумент

Возможно, есть другой способ с методом file () но это не сработает

$(fromInput).file(['File'],arrImg[1])
...