iframe模拟ajax异步请求,上传文件

前端页面文件上,写上target,并且要写上enctype="multipart/form-data"才能上传图片

                    <form class="form-horizontal" role="form" enctype="multipart/form-data" method='post' target='frameFile' action="__URL__/upload/" id="picform" name="picform">
                      <div class="form-group">
                        <label class="col-sm-2 control-label" for="form-field-1">  上传产品图片:</label>
                        <div class="col-sm-4">
                          <div><input type="file" name="thumb" class="btn btn-warning" οnchange="upimg()" id="thumb"></div>
                           <div class="space-4"></div>
                          <!--<div><button class="btn btn-warning">上传</button></div>
                          <div class="space-4"></div>-->
                          <div><img src="" style="width:100px;max-height:300px;display:none;" id="img"/></div> 
                        </div>
                        <div class="help-block col-xs-12 col-sm-reset inline">
                          
                        </div>
                      </div>
                    </form>
                    <iframe id='frameFile' name='frameFile' style='display: none;'></iframe>

现在需要调用一个回调函数,在这个html页面

      function callback(image){
      // alert(str);
        $("#img").attr("src","__ROOT__/Uploads/"+image);
        $("#img").show();
        imgSuccess = true;
      }

然后往iframe内写入内容,去调用这个父页面的回调函数,在php后台的iframe处理数据的代码内(即action对应的方法内)成功执行其他代码后

echo("<script type=\"text/javascript\">parent.callback('".$_POST['image']."');</script>");

    public function upload() {
        if (!empty($_FILES)) {
            //如果有文件上传 上传附件
            $this->_upload();
        }
    }

    // 文件上传
    protected function _upload() {
        import('@.ORG.UploadFile');
        //导入上传类
        $upload = new UploadFile();
        //设置上传文件大小
        $upload->maxSize            = 3292200;
        //设置上传文件类型
        $upload->allowExts          = explode(',', 'jpg,gif,png,jpeg');
        //设置附件上传目录
        $upload->savePath           = './Uploads/';
        //设置需要生成缩略图,仅对图像文件有效
        $upload->thumb              = true;
        // 设置引用图片类库包路径
        $upload->imageClassPath     = '@.ORG.Image';
        //设置需要生成缩略图的文件后缀
        $upload->thumbPrefix        = 'm_,s_';  //生产2张缩略图
        //设置缩略图最大宽度
        $upload->thumbMaxWidth      = '400,100';
        //设置缩略图最大高度
        $upload->thumbMaxHeight     = '400,100';
        //设置上传文件规则
        $upload->saveRule           = 'uniqid';
        //删除原图
        $upload->thumbRemoveOrigin  = false;
        if (!$upload->upload()) {
            //捕获上传异常
            $this->error($upload->getErrorMsg());
        } else {
            //取得成功上传的文件信息
            $uploadList = $upload->getUploadFileInfo();
            import('@.ORG.Image');
            //给m_缩略图添加水印, Image::water('原文件名','水印图片地址')
            // Image::water($uploadList[0]['savepath'] . 'm_' . $uploadList[0]['savename'], __ROOT__.'/App/Tpl/Public/Images/logo.png');
            $_POST['image'] = $uploadList[0]['savename'];
        }
        $model  = M('Img');
        //保存当前数据对象
        $data['photo']          = $_POST['image'];
        $_SESSION['image'] = $_POST['image'];
        // $data['product_model']  = $_POST['product_model'];
        // $data['stocks']         = $_POST['stocks'];
        // $data['update_time']    = date('Y-m-d H:i:s',NOW_TIME);
        $list   = $model->add($data);
        if ($list !== false) {
            // $this->success('上传图片成功!');
            // echo("ss");
            echo("<script type=\"text/javascript\">parent.callback('".$_POST['image']."');</script>");
        } else {
            $this->error('上传图片失败!');
        }
    }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值