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

来源:互联网 发布:身份证淘宝子账号验证 编辑:程序博客网 时间:2024/05/21 21:11

前端页面文件上,写上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" onchange="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
原创粉丝点击