отправить dataForm с файлом на странице jquery ajax на php - PullRequest
0 голосов
/ 05 марта 2020

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

Это фрагмент функции перетаскивания:

else if(item.isFile) {

var element = new FormData();

                element.append('foto', item);
                element.append('idMadre', id);

                $.ajax({
                url: '../php/model.php?az=dragDropElementoFoto',
                data:element,
                async:false,
                processData:false,
                contentType:false,
                type: 'POST',
                dataType: 'json'
            })
            .done(function(data){
                let elem = document.createElement("li");
                elem.innerHTML = "<div class='row'><div class='col'><i class='fas fa-image'></i> "+item.name+"</div><div class='col-2'><i style='color:red' class='far fa-times-circle'></i></div></div>";
                container.appendChild(elem);

                })

На странице PHP , называется "модель. php", у меня есть код для выполнения типичной операции C .RUD с БД. Как я могу использовать элемент FormData на странице PHP?

Это код PHP модели. php:

if($_REQUEST['az']=="dragDropElementoFoto") {


    $id=$_POST['idMadre'];
        $ogg=$_POST['foto'];
        var_dump($ogg);
    $uploaddir = "../img/catalogo/";
        $userfile_tmp = $_FILES['foto']['tmp_name'];
        $userfile_name = $_POST['foto']['name'];
        $urlfoto=$uploaddir.$userfile_name;
        if (move_uploaded_file($userfile_tmp, $uploaddir.$userfile_name)) {
            $sql="insert into documento (doc_url,doc_nome_file,doc_titolo,doc_cartella,doc_pub)"
        . "VALUES(:doc_url,:doc_nome_file,:doc_titolo,:doc_cartella,:doc_pub)";
    $dbo->query($sql);
    $dbo->bind(":doc_url", $urlfoto);
    $dbo->bind(":doc_nome_file", $userfile_name);
    $dbo->bind(":doc_titolo", $userfile_name);
    $dbo->bind(":doc_cartella", $id);
    $dbo->bind(":doc_pub",0);
    $dbo->execute();

            $sql="select * from documento where doc_id IN (select MAX(doc_id) as doc_id from documento)";
            $dbo->query($sql);
            $risposta=$dbo->single();

    echo json_encode($risposta);
}
}

Спасибо большое много.

1 Ответ

0 голосов
/ 05 марта 2020

в вашем html есть ли у вас ввод foto / idmadre? а во-вторых, вы можете декодировать json как

$data = json_encode( $_POST );
  if( json_last_error() != JSON_ERROR_NONE ){
   exit;
  }
  if (!isset($_FILES['image']) || !is_uploaded_file($_FILES['image']['tmp_name'])) {
   echo 'No file send...';
   exit;
  }

Далее вы можете использовать как простой пост.

Другой пример:

var myFormData = new FormData();
myFormData.append('pictureFile', pictureInput.files[0]);

$.ajax({
  url: 'upload.php',
  type: 'POST',
  processData: false, // important
  contentType: false, // important
  dataType : 'json',
  data: myFormData
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...