如何通过将Ajax中的<input type =“ file” />数据放入对象中来发送数据?

时间:2018-12-04 06:57:15

标签: javascript jquery html ajax file

我的html中有一个简单的上传文件,如下所示:

<div class="col-md-12">
    <span id="fileUploadErr">Please Upload A File!</span>
    <div  style="margin-bottom: 10px;"></div>
    <input id="pickUpFileAttachment" type="file" name="attachFileObj" size="60" />
</div>

当我点击“提交” 按钮时,将发生以下操作:

$("form").submit(function() {
    event.preventDefault();

    var assignmentObj1 = {

        selectionId: trDataSecondTable.selectionId,
        inout: "in",
        letterReceivedBy: $("#letterReceivedBy").val(),
        letterIssuedSubBy: $("#letterIssuedSubBy").val(),
        representativeNameEng: $("#representativeNameEng").val(),

        letterId: 2,
        assessmentNo: 0
        imageFile: $("#representativeNameEng").val()
        imageTitle:
    }

    console.log(jsonData);
    $.ajax({

        url: A_PAGE_CONTEXT_PATH + "/form/api/saveProcessAnexTwo",
        method: "post",
        contentType: "application/json",
        dataType: "json",
        data: JSON.stringify(assignmentObj1),
        success: function(response) {

        },
        error: function(response) {
            switch (response.status) {
                case 409:
                    alert("error");
            }
        }
    });
});

从AJAX发送时,我需要分配 fileName和上载的文件,并且需要将其放在 assignmentObj1 变量中,所以我尝试了以下操作:imageFile: $("#representativeNameEng").val()获取文件信息,但是它没有来。如何将文件信息放入本地变量中以获取文件信息并从AJAX发送?还有如何获得可以放在imageTitle:属性中的文件的名称?

2 个答案:

答案 0 :(得分:1)

最简单的方法是使用formData发送数据:

var data = new FormData();
$.each($('#filecontainer')[0].files, function(i, file) {
   data.append('file-'+i, file);
});

所以现在您有了formData对象

$.ajax({
   url: 'php/upload.php',
   data: data,
   cache: false,
   contentType: false,
   processData: false,
   method: 'POST',
   type: 'POST', // For jQuery < 1.9
   success: function(data){
      alert(data);
   }
});

希望这会有所帮助。

答案 1 :(得分:1)

这是处理文件的方法:

Response response = RestAssured.given ()
  .accept("application/json")
  .body(body)
  .when()
  .put(link);
JsonPath jsonPath = JsonPath.from (response.asString ());   
String date = jsonPath.get ("responseRoot.dateField"));
DateTime dt = new DateTime (date);