thinkphp ajax上传文件 (问:如何使用ThinkPHP实现AJAX上传文件?)
想必大家都经历过文件上传的过程,在传统的方式中,我们需要使用form表单来进行文件上传,然后后端就接受到了这个文件。但是,传统方式不能做到实时上传文件,而ajax上传文件可以做到实时上传文件,那么如何使用thinkphp实现ajax上传文件呢?
第一步,引入jquery.js,新建一个上传的demo页面,代码如下:
“`html
“`
在上述的代码中,我们引入了jquery.js,其中文件上传的区域设计在了id为uploadarea的div中。
第二步,编写ajax代码
“`javascript
$(function () {
$(‘#upload’).bind(‘click’, function () {
var file = $(“#file”)[0].files[0];
var formData = new FormData(); // 通过formData对象来将文件上传到服务器
formData.append(‘file’, file);
$.ajax({
url: ‘/file/upload.html’, // 后端接受地址
type: ‘POST’,
data: formData,
processData: false, // 不处理formdata数据
contentType: false, // 不设置内容类型
success: function (res) {
$(“#img”).html(‘‘);
}
});
});
});
“`
在上述的代码中,首先选择上传按钮的id为upload,点击之后会获取文件。注意,需要将文件放在formData中,然后将其发送到后端的url地址中,在后端中接受到数据之后,返回一个地址到前端界面,通过标签来显示图片。
第三步,编写后端代码
php
public function upload()
{
$uploadPath = APP_PATH . "/public/uploads/"; //上传路径
$res = $this->model->uploadFile($_FILES['file'], $uploadPath);
if ($res) {
echo "/uploads/".$res['savename'];
}
}
在上述代码中,首先获取上传的路径,然后通过thinkphp框架自带的函数uploadFile来上传文件,将上传后的文件放在指定的路径下,最终返回相对路径给前端。
综上所述,我们可以看到thinkphp实现ajax上传文件非常的简单,通过引入jquery.js和前端的ajax代码,然后在后端中通过thinkphp自带的上传函数实现文件上传,最终实现文件上传功能的实时化。