图像无法从FormData在php中解析

时间:2019-01-29 13:58:41

标签: php jquery ajax form-data

我已设置代码以通过Ajax将formdata传递给我的php文件。我的代码可以正常工作,直到我实际选择图像,然后在我的php文件中收到解析错误。我收到未定义的索引错误。我有一个名为“ AddItemForm”的表单。我的图像输入行看起来像这样:

 <input type="file" id="_ni_image_in" onchange="readURL(this);" name="ni_image" accept="image/png, image/jpeg">

我的javascript / ajax代码看起来像这样,当在表单上选择“提交”按钮时被调用:

function AddItem(){
var form = document.forms["AddItemForm"];
var name = document.forms["AddItemForm"]["ni_name"].value;
var tag = document.forms["AddItemForm"]["ni_tag"].value;
var description = document.forms["AddItemForm"]["ni_description"].value;
var weight = document.forms["AddItemForm"]["ni_weight"].value;
var date = document.forms["AddItemForm"]["ni__date"].value;
var color = document.forms["AddItemForm"]["ni_color"].value;
var itag2 = document.forms["AddItemForm"]["ni_tag2"].value;
var itag3 = document.forms["addcowform"]["ni_tag3"].value;
var useremail= "<?php echo $_SESSION['UserEmail']; ?>";

var itemdata = new FormData();

    var filedata = document.getElementById("_nc_image_in").files[0];
    itemdata.append('Item_Image', filedata);

itemdata.append('Name', name);
itemdata.append('Tag_Num', tag);
itemdata.append('Description', description);
itemdata.append('Weight', weight);
itemdata.append('Date', date);
itemdata.append('Color', color);
itemdata.append('Tag_Num2', itag2);
itemdata.append('Tag_Num3', itag3);
itemdata.append('User_Email', useremail);

  var isValid = false;
  $.ajax({           
      type: "POST",  
      url: "/AddNewItem.php",  
      data: itemdata,
      processData: false,
          contentType: false,
      success: function(resp){
        console.log(resp);
        if(resp.reply == "Success")
        {
          isValid = true;
          form.submit();
        }
        else
        {
       isValid = false;
        }
      },
      error: function(data, status){
        console.log(data, status);
        alert("error")
      }

    }); //end Ajax
    console.log(isValid);
     return isValid;
};

在我的php文件中,我正在检索如下图像:

$itemmage = $_REQUEST["Item_Image"];

如果我没有选择图像,它就可以正常工作,因此获取或检索图像的方式出了点问题。请帮忙。

1 个答案:

答案 0 :(得分:0)

使用$_FILES代替$_REQUEST

// -----编辑----- //

if(isset($_FILES['image']) && $_FILES['image']['name']!=""){
    $image_name= $_FILES['image']['name'];
    move_uploaded_file( $_FILES['image']['tmp_name'], "images/$image_name");
}

$_FILES每个图像都有一个数组:

[name] => MyFile.jpg
[type] => image/jpeg
[tmp_name] => /tmp/php/php6hst32
[error] => UPLOAD_ERR_OK
[size] => 98174

请参见http://php.net/manual/en/reserved.variables.files.php