在我的项目中,我使用ajax插入文件和其他信息之类的数据,用于保存我想要插入尽可能多的文件的文件,所以我做的是我有这个表,我将文件内容存储为
var file = $('#file')[0].files[0];
//var file = document.getElementById('file').files[0];
var name = file.name;
var size = file.size;
var type = file.type;
var newname = $('#filename').val();
var newRow = "<tr>" +
"<td id=''>" + file.name + "</td>" +
"<td id=''>" + file.size + "</td>" +
"<td id=''>" + file.type + "</td>" +
"<td id=''>" + newname + "</td>" +
"<td>" + "<a href='#' id='" + id + "' class='deletefile'>Delete</a>" + "</td>" +
"</tr>";
$("#filetable > tbody > tr:last").after(newRow);
这就是我如何在表格中保存文件内容以便我可以在数据库中插入许多文件,这样我就可以使用newname
重命名文件。
之后我push
这个表的内容在一个变量中(我没有在push
中包含我如何从表中获取数据,因为它太长了)。然后我把变量放在formdata
$('#Addtotable').click(function() {
var $rows = $('#filetable').find("tr:not(:eq(0))");
var valueToPush = [];
$rows.each(function() {
var $tds = $(this).find('td');
var nameoffile = $tds.eq(0).text();
var size = $tds.eq(1).text();
var type = $tds.eq(2).text();
var filename = $tds.eq(3).text();
valueToPush.push({
nameoffile: nameoffile,
size: size,
filename: filename,
type: type
});
});
var formData = new FormData();
formData.append('file', JSON.stringify(valueToPush));
请注意。我只包含了文件的附加数据
然后ajax看起来像这样
$.ajax({
url: '../include/Add.php',
type: 'POST',
dataType: "json",
data: formData,
processData: false, // tell jQuery not to process the data
contentType: false, // tell jQuery not to set contentType
success: function(data) {
console.log(data);
//alert(data.message);
//window.location.reload(true);
},
error: function(data) {
console.log(data);
//alert("Error!"); // Optional
//window.location.reload(true);
}
});
在我的php中我有这个条件
if (!empty($_FILES)) {
我的问题是,当我尝试回显变量$_FILES
时,为什么我的($_POST['file'])
始终为空,它将返回correct content of the file
,如current file name
,file size
和file type