我使用jQuery ajax上传文件。我将File
和Path
追加到FormData
。我想在ajax File
中获取Path
和beforeSend
个内容。例如:
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
}
});
我该怎么做才能做到这一点?
答案 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>');