发布于 1970-01-01 08:00
  • 2 个回答
    • 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);
      2022-11-29 19:29 回答
    • 首先, 哪怕是测试代码, 换行啊,命名啊,缩进啊,也一定要规范, 因为你是给别人看的, 同理,代码也不要直接上图片, markdown语法稍微看一眼, 再说SF的markdown编辑器也挺好用的

      好了, 吐槽结束, 开始回答问题:

      「怎么我在控制器完全不用post过来数据呢?」

      答: 既然你发现不用你给数据,那么就证明数据是ThinkPHP的 Upload 类完成了这一工作, 所以咱们去找一下.

      Upload 类文件位于 ThinkPHP/Library/Think 目录下的 Upload.class.php 文件中.

      先看一下是不是 __construct 中获取的数据呢?
      不贴代码了, 题主自己去看下吧, 结果是不是.

      既然不是, 那就去找一找下面调用的 upload 方法.

      /**
       * 上传文件
       * @param 文件信息数组 $files ,通常是 $_FILES数组
       */
      public function upload($files='') {
          if('' === $files){
              $files  =   $_FILES;
          }
          ......
      }

      好的, 找到了, ThinkPHP的注释也写的很清晰了, 讲明了它是使用 $_FILES 这个 超全局变量 获取的文件数据. 那么 $_FILES 这个 超全局变量 是做什么的呢? 移步: PHP文档

      下一个问题:

      「怎么改能按了提交就显示出来?」

      答: 先打印出自己成功获取到的文件数据与路径, 然后在 $.ajaxsuccess 回调中, 向 body 中插入 img 标签, src 属性为刚刚获取到的图片路径.

      2022-11-29 19:29 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有