构造表单
首先,页面 HTML 结构如下:
<?php echo form_open_multipart('upload/upload_file'); ?>
<input type="file" name="userfile" size="20" />
<input type="submit" value="upload" />
</form>
这种结构其实不好,因为从代码上看不到 <form …> 标签,HTML 标签的完整性被破坏了。
最终,PHP 实际输出的结果是:
<form action="http://example.com/upload/upload_file" method="post" accept-charset="utf-8" enctype="multipart/form-data">
<div style="display:none">
<input type="hidden" name="fcs_csrf_token" value="32bfdyeikg0d68dd3c42fd207de91d3">
</div>
...
</form>
注意,其中增加了 csrf 验证。
jQuery ajax 上传文件
$("form#data").submit(function(e) {
e.preventDefault();
var formData = new FormData(this);
$.ajax({
url: window.location.pathname,
type: 'POST',
data: formData,
success: function (data) {
alert(data)
},
cache: false,
contentType: false,
processData: false
});
});