Fork me on github

php 接受处理二进制数据流并保存成图片

<form action="提交到处理地址" method="post" enctype="multipart/form-data" class="form-horizontal">
      <div class="form-group">
              <label class="col-lg-2 col-sm-2 control-label">上传图片</label>
              <div class="col-lg-4">
                     <input type="file" name="photo">
              </div>
      </div>
      <div class="form-group">
              <div class="col-lg-offset-2 col-lg-4">
                      <button type="submit" name="submit" class="btn btn-default">确定</button>
              </div>
       </div>
</form>

  

// 用来处理上传的数据流代码
public function imgApp(){
        //方式一:电脑上传文件
        $image = $_FILES["photo"]["tmp_name"];
        $fp = fopen($image, "r");
        $file = fread($fp, $_FILES["photo"]["size"]); //二进制数据流

        //保存地址
        $imgDir = './Uploads/';   //必须是项目所在的绝对路径
        //要生成的图片名字
        $filename = date("Ym")."/".md5(time().mt_rand(10, 99)).".png"; //新图片名称
        $newFilePath = $imgDir.$filename;
        $data = $file;
        $newFile = fopen($newFilePath,"w"); //打开文件准备写入
        fwrite($newFile,$data); //写入二进制流到文件
        fclose($newFile); //关闭文件

 

        //写入数据库
        $arr = array(
                "uid" => 1, //用户id
                "cid" => 1, //分类id
                "a_title" => $_POST["a_title"], //标题
                "a_content" => $_POST["a_content"], //内容
                "photo" => $filename, //图片路径
                "a_urgent" => $_POST['status'] == 'on' ? 0 : 1, //是否急需
                "add_time" => time(), //创建时间
            );

        if(empty($arr["a_title"])){
            $this->error("标题不为空");
        } else if(empty($arr["a_content"])) {
            $this->error("内容不为空");
        }

        if($db = M("answer")->add($arr)){
            $this->success("保存成功", "demo2");
        } else {
            $this->error("失败");
        }
}

  

 

posted @ 2015-12-07 12:18  Champion-水龙果  阅读(3043)  评论(0编辑  收藏  举报
Champion-水龙果