如何使用jQuery读取$_FILES['name']['tmp_name']
How to read the $_FILES['name']['tmp_name'] using jQuery
我正在制作一个应用程序,以使用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;
}
有人可以帮助我吗?提前谢谢。
原因是
使用 HTML 上传文件并不像您想象的那么简单。这里有两个很好的例子,普通的 POST 是什么样子的(在 HTTP 协议中)与多部分/表单数据请求的样子:
http://www.htmlcodetutorial.com/forms/form_enctype.html
从这里要带走的是,表单提交和带有文件上传的表单提交在技术上是两件非常不同的事情。
$.post 只能为你做正常的表单提交,jQuery 不支持文件上传。
有两种方法可以解决此问题:
- 只需做一个简单的表单提交(更简单的方法)
- 必须以编程方式将文件添加到请求中。如果您选择此选项,您可能会使用一个插件(尽管从未尝试过):https://github.com/blueimp/jQuery-File-Upload/wiki/How-to-submit-additional-form-data
干杯马蒂亚斯
相关文章:
- AngularJS单选筛选不适用于Name、Description和Field4复选框值
- 未捕获的类型错误:无法读取属性'name'即使它存在,也无法定义
- 正在检测导航到<a name=“;最新主题”></a>
- 骨干's Router.execute(callback,args,name)方法获取未定义的名称
- JavaScript,JQuery.需要帮助才能获得'name'从我的JSON中删除
- 从 Javascript 中设置 ng-model name
- jquery使用name from变量按类选择元素
- 猫鼬——如何找到物体所在的场&;name”;不包含数字
- 如何让firefox使用style['attribute name']=设置样式属性
- Javascript,var name=1,“;类型名称“;给出“;字符串”;
- 无法使用 $('input[name=“rate”]').focus() 聚焦文本框;方法
- JS数组称为“;name”;行为怪异
- Form.target=window.opener.name不起作用
- SCRIPT5007:属性onclick=;JavaScript:functionName('name'
- 如何获取所有包含 icon-(icon-name) 并附加
- 嵌套数组以及ID和NAME
- 可以't改变'name'元素的属性
- 在库(javascript/HTML)中将“name”替换为“id”
- 为什么 name 属性无法使用 JavaScript 进行设置
- jQuery 选择当属性 NAME 开头时