我正在使用excel_reader2.php创建一个将excel导入数据库的应用程序。我创建了一个用于上传excel文件的表单,当我要上传的文件被选中时,我想读取excel文件的数据边界表。当我使用js时会出现问题,我无法在php代码中解析$ _FILES。
<script type="text/javascript">
function sheetChange()
{
var html;
$("#sheetName td").remove();
var fileInputContent = $('#form').serializeArray();
$.post(basedomain+"mycontroller/readSheet",fileInputContent,function(result)
{
if(result)
{
$("#sheetName").show();
var data = JSON.parse(result);
html += '<td>Sheet Name</td><td colspan=\'3\'><select name=\'SHEET\' required>';
for(var i in data)
{
html += '<option value=\''+data[i]+'\'>'+data[i]+'</option>';
}
html +='</select></td>';
$("#sheetName").append(html);
}
});
}
</script>
<form id = 'form' method="post" action="upload.php" enctype="multipart/form-data">
<table cellspacing="0" cellpadding="0">
<tr>
<td>Input Xls File</td>
<td colspan="3"><input type="file" name="file" id="file" onchange="sheetChange()"/></td>
</tr>
<tr id="sheetName"></tr>
</table>
</form>
php代码:
public function readSheet()
{
error_reporting(E_ALL ^ E_NOTICE);
require_once 'excel_reader2.php';
$data = new Spreadsheet_Excel_Reader($_FILES['file']['tmp_name']); //$_FILES is null
foreach ($data->boundsheets as $k=>$sheet)
{
$row[] = $sheet['name'];
}
echo json_encode($row);
exit;
}
任何人都可以帮助我吗?先谢谢。
答案 0 :(得分:1)
原因是使用HTML上传文件并不像您想象的那么简单。以下是两个很好的例子,一个普通的POST(在HTTP协议中)与多部分/表单数据请求的外观如何:
http://www.htmlcodetutorial.com/forms/form_enctype.html
从这里拿走的东西是,表单提交和表单提交与文件上传在技术上是两个非常不同的东西。
$ .post只能为您提供正常的表单提交,jQuery不支持文件上传。
有两种方法可以解决这个问题:
干杯, 的Matthias