如何使用FormData()将图像和多个输入传递给php

时间:2019-01-26 22:14:31

标签: php ajax form-data

我有一个表格,允许用户输入项目编号,项目说明,创建日期,还可以上传图像。我想将商品编号,商品说明,创建日期,上传的图片以及非格式输入(登录ID)推送到我的php文件中,以上传到数据库中。在尝试添加图像之前,一切都正常进行。我无法显示我的图像。有人告诉我将FormData用于图像,但是如何传递来自表单的其他输入和非表单输入的登录ID。这是我的原始代码,除了图像以错误的格式传递外,都在工作。

@ElementCollection

请注意UserEmail不在表单中。我需要将此数据与其他数据一起发送,以便可以同时上传。

现在,我正在尝试更新代码以适合格式,但是我不确定自己的语法是否正确,并且我不知道如何添加用户电子邮件。

UserSkill

1)我走对了吗?语法对吗? 2)如何添加用户电子邮件?

1 个答案:

答案 0 :(得分:0)

您应该从此开始将一个或多个图像添加到FormData:

var formdata = new FormData();

// Check For Multile Files to Upload
if( document.getElementById("upload_field_id") ) {

    var filedata = document.getElementById("upload_field_id").files;
    var len = filedata.length;

    if( len ) {
        for (var i=0; i < len; i++) {
            var file = filedata[i];
        formdata.append('files[]', file);
        }
    }
}

在此之后,您还可以附加其他字段:

// Your code: 
var number = document.forms["additemform"]["item_number"].value;
var description = document.forms["additemform"]["item_description"].value;
var date = document.forms["additemform"]["creation_date"].value;
var useremail= "<?php echo $_SESSION['UserEmail']; ?>";
// End of Your code
formdata.append('number', number);
formdata.append('description', description);
formdata.append('date', date);
formdata.append('useremail', useremail);

就是这样。您只需在ajax调用中将formdata作为data属性的值,并在$ .php目标文件中捕获$ _REQUEST。