1

I am trying to post some data into server using ajax. I am stuck on uploading image, I don't know where my mistake is. Can any one please suggest how can I fix this?

Below is my script and php code.

$("#submit").click(function() {

  var formData = new FormData();
  formData.append('file', $('input[type=file]')[0].files[0]);

  var name = $("#first_name").val();
  var country = $("#country").val();
  var city = $("#city").val();

  $.ajax({

    url: 'personaliseService.php?name=' + name + '&country=' + country + '&city=' + city,
    dataType: 'json',
    processData: false,
    contentType: false,
    data: formData,
    //data: new FormData(), // Data sent to server, a set of key/value pairs (i.e. form fields and values)
    success: function(response) {
      console.log(response);
    },
    error: function(error) {
      alert("Yes");
      console.log(error);
    }

  });
});
<?php

    include("config.php");

    $name = $_REQUEST['name'];
    $country = $_REQUEST['country'];
    $city = $_REQUEST['city'];
    $image = $_FILES['image']['name'];
    $sourcePath = $_FILES['image']['tmp_name'];

    $targetPath = "uploads/".$_FILES['file']['name']; // Target path where file is to be stored
    move_uploaded_file($sourcePath, $targetPath) ;    // Moving Uploaded file

    $sql = "INSERT into personalise (name, country, city, image) VALUES ('$name', '$country', '$city', '$image')";

    $sqlQuery = mysqli_query($conn, $sql);

    if(mysqli_insert_id($conn) > 0){

        $insertValue = array("response" => "Data Inserted Successfully");
        echo '{"response": '.json_encode($insertValue).', "success": true}';

    }else{

        echo '{"response": '.json_encode($insertValue).', "success": false}';

    }

?>
mplungjan
  • 169,008
  • 28
  • 173
  • 236

1 Answers1

0

You have to use same name to access the file in php code as you have mentioned in formdata that is "file".

Hope you enjoyed :)