扫码关注官方订阅号
控制器代码
html代码
怎么改能按了提交就显示出来?这个thinkphp这个post数据是怎么用的,怎么我在控制器完全不用post过来数据呢?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
ajax上传文件需要使用formData对象
var formData = new FormData($( "form" )[0]); $.ajax({ url: '__CONTROLLER__/upload' , type: 'POST', data: formData, dataType:'json', async: false, cache: false, contentType: false, processData: false, success: function (response) { if(response.status == 1){ //判断返回的status来确定文件是否上传成功,以及上传成功后要做的操作 } alert(response.msg); }, });
php代码最后得改一下
if(!$info){ $data = [ 'status'=>0, 'msg'=>'上传失败,'.$upload->getError() ]; }else{ $data = [ 'status'=>1, 'msg'=>'上传成功' ]; } echo json_encode($data);die; //这样ajax用json接收才能正确弹出php返回的信息 //或者return $this->ajaxReturn($data);
首先, 哪怕是测试代码, 换行啊,命名啊,缩进啊,也一定要规范, 因为你是给别人看的, 同理,代码也不要直接上图片, markdown语法稍微看一眼, 再说SF的markdown编辑器也挺好用的
好了, 吐槽结束, 开始回答问题:
「怎么我在控制器完全不用post过来数据呢?」
答: 既然你发现不用你给数据,那么就证明数据是ThinkPHP的 Upload 类完成了这一工作, 所以咱们去找一下.
Upload
Upload 类文件位于 ThinkPHP/Library/Think 目录下的 Upload.class.php 文件中.
ThinkPHP/Library/Think
Upload.class.php
先看一下是不是 __construct 中获取的数据呢?不贴代码了, 题主自己去看下吧, 结果是不是.
__construct
既然不是, 那就去找一找下面调用的 upload 方法.
upload
/** * 上传文件 * @param 文件信息数组 $files ,通常是 $_FILES数组 */ public function upload($files='') { if('' === $files){ $files = $_FILES; } ...... }
好的, 找到了, ThinkPHP的注释也写的很清晰了, 讲明了它是使用 $_FILES 这个 超全局变量 获取的文件数据. 那么 $_FILES 这个 超全局变量 是做什么的呢? 移步: PHP文档
$_FILES
超全局变量
下一个问题:
「怎么改能按了提交就显示出来?」
答: 先打印出自己成功获取到的文件数据与路径, 然后在 $.ajax 的 success 回调中, 向 body 中插入 img 标签, src 属性为刚刚获取到的图片路径.
$.ajax
success
body
img
src
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
ajax上传文件需要使用formData对象
php代码最后得改一下
首先, 哪怕是测试代码, 换行啊,命名啊,缩进啊,也一定要规范, 因为你是给别人看的, 同理,代码也不要直接上图片, markdown语法稍微看一眼, 再说SF的markdown编辑器也挺好用的
好了, 吐槽结束, 开始回答问题:
「怎么我在控制器完全不用post过来数据呢?」
答: 既然你发现不用你给数据,那么就证明数据是ThinkPHP的
Upload类完成了这一工作, 所以咱们去找一下.Upload类文件位于ThinkPHP/Library/Think目录下的Upload.class.php文件中.先看一下是不是
__construct中获取的数据呢?不贴代码了, 题主自己去看下吧, 结果是不是.
既然不是, 那就去找一找下面调用的
upload方法.好的, 找到了, ThinkPHP的注释也写的很清晰了, 讲明了它是使用
$_FILES这个超全局变量获取的文件数据. 那么$_FILES这个超全局变量是做什么的呢? 移步: PHP文档下一个问题:
「怎么改能按了提交就显示出来?」
答: 先打印出自己成功获取到的文件数据与路径, 然后在
$.ajax的success回调中, 向body中插入img标签,src属性为刚刚获取到的图片路径.