使用ajax和php上传图像和数据

时间:2017-06-09 08:57:24

标签: php mysql ajax pdo image-uploading

我正在尝试将名字,姓氏,描述和图像路径上传到MySql数据库。并将上传的图像移动到特定文件夹。

这是我的ajax功能

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

$.ajax({
  type: "POST",
  url: "functions.php",
  contentType: false,
  cache: false,
  processData: false,
  data: {
    function: "savepeople",
    data: formData
  }, success: function(data){
      console.log(data);
      getPeople();
  }

});

的functions.php

if(isset($_POST['function'])){
 $f = $_POST['function'];

 if($f == "savepeople"){
  require_once("config.php");   
  echo $_POST['firstname'];
  .
  .
  .

3 个答案:

答案 0 :(得分:1)

你不能用ajax调用直接将图像发送到php文件,你必须在表格定义时采用enctype="multipart/form-data"格式

并在ajax调用

时替换此代码以进行文件上传

用于在formdata中添加文件,使用下面的代码

formData = new FormData(); //your form name 
var file_data = $('input[type="file"]')[0].file;
formData.append("file", file_data);
formData.append("function","savepeople"); // new variable for your php condition



$.ajax({
    url: "YOUR_FILE_PATH",
    type: "POST",
    data: formData,
    contentType: false,
    cache: false,
    processData: false,
    success: function(data) {
    // success operation here
    },

在php端,您必须使用$_FILES['YOUR_FILE_NAME']而不是$_POST['YOUR_FILE_NAME']来访问服务器上的上传文件。

答案 1 :(得分:0)

你可以试试这段代码

$.ajax({
    type:'POST',
    url:'functions.php',     
    data:new FormData($('#my_form')[0]),
    cache: false,
    contentType: false,
    processData: false,
    success:function(msg)
    {
         console.log(msg);
    }
});
return false;

其中#my_form是您的表单ID

答案 2 :(得分:0)

var formData = new FormData($(this)[0]);
var action = "savepeople";

    $.ajax({
        url  : 'functions.php',
    type : 'POST',
    data: {action:action,formData:formData},
    contentType: false,
    cache: false,
    processData:false,
    async : false,
    , success: function(data){
console.log(data);
getPeople();
}
});

<强>的functions.php

if(isset($_POST['action']) && $_POST['action'] == "savepeople"){


    //TO DO CODE
}