在JQuery ajax beforeSend中获取formData的值

时间:2015-11-21 12:37:29

标签: jquery ajax form-data

我使用jQuery ajax上传文件。我将FilePath追加到FormData。我想在ajax File中获取PathbeforeSend个内容。例如:

var formData = new FormData();
formData.append("Path", "Gallery/Image");
formData.append("File", $("input[type='file']")[0].files[0]);

$.ajax({
    url : "Upload.php",
    type: "POST",               
    xhr: function() {
        // code
    },      
    // code
    data: formData,             
    beforeSend: function(xhr, settings) {
        // Get formData values in here
    }
});                             

我该怎么做才能做到这一点?

2 个答案:

答案 0 :(得分:1)

beforeSend的目的通常是设置有关正在发送的数据的标题(说明)。例如,当您在发货之前在亚马逊上购买东西时,我们需要在包装盒上标记跟踪标签。标签不是正在运送的物品的一部分,但是转移所必需的。您的formData是数据是包的内容。您无法在发送单个请求之前发送有效负载;它几乎听起来像是远程传送(数据在发送之前就已到达!)

答案 1 :(得分:0)

不是100%确定你在这之后是什么,但这里是你如何查询文件信息:样本小提琴:http://jsfiddle.net/MarkSchultheiss/4x4rqc82/

示例标记:

<input type="file" id="myfile" value="">
<br>
<img src="" width="200" style="display:none;" />
<br />
<div id="mypathdisplay"></div>
<div id="fileinfo">FileInfo:</div>

示例代码:

$('#myfile').change(function (event) {
    var formData = new FormData();
    formData.append("Path", "Gallery/Image");
    formData.append("File", $("input[type='file']")[0].files[0]);
    $('#fileinfo').append('<div>' + "Name:" + event.target.files[0].name + '</div>');
    $('#fileinfo').append('<div>' + "LastModified:" + event.target.files[0].lastModified + '</div>');
    $('#fileinfo').append('<div>' + "LastModifiedDate:" + event.target.files[0].lastModifiedDate + '</div>');
    $('#fileinfo').append('<div>' + "LastModifiedDateUTCDate:" + event.target.files[0].lastModifiedDate.getUTCDate() + '</div>');
    $('#fileinfo').append('<div>' + "LastModifiedDateUTCHours:" + event.target.files[0].lastModifiedDate.getUTCHours() + '</div>');
    $('#fileinfo').append('<div>' + "Size:" + event.target.files[0].size + '</div>');
    $('#fileinfo').append('<div>' + "Type:" + event.target.files[0].type + '</div>');
    var mything = formData; ///.getAll("File");

    var tmppath = URL.createObjectURL(event.target.files[0]);
    console.dir(event.target.files[0]);
    $("img").fadeIn("fast").attr('src', URL.createObjectURL(event.target.files[0]));

    $("#mypathdisplay").html("Temp Path(Copy it and paste in browser address bar) ==> <span class='paths'>[" + tmppath + "]</span>");
});

注意:你也可以在处理程序中使用它来简化它:

var myfile =  this.files[0];
$('#fileinfo').append('<div>' + "Name:" + myfile.name+'</div>');