thinkphp 各种姿势图片上传

base64保存图片

    public function base64Img(XhyRequest $request){

        $data = $request->param();

        if(!empty($data['FJ_img'])){

            $reg = '/data:image\/(\w+?);base64,(.+)$/si';

            preg_match($reg,$data['FJ_img'],$match_result);

            var_dump($match_result);die;

            $file_name = time().'.'.$match_result[1];

            $logo_path = 'uploadimg/'.$file_name;

            $num = file_put_contents($logo_path,base64_decode($match_result[2]));

            if(!empty($num)){

                $img['img_url']=add_http($_SERVER['HTTP_HOST'].'/'.$logo_path);

                outJson('200','保存成功',$img);

            }else{

                outJson('401','保存失败');

            }

        }else{
            outJson('403','参数错误');
        }
    }

文件流
这种是tp6的,要记得引入
还有想要改变路径可以去config/filesystem.php修改
在这里插入图片描述

use think\facade\Filesystem;
    public function UploadImg(XhyRequest $request){
        // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('FJ_img');

        if ($file) {
            // 上传到本地服务器
            //重新命名
            $save_name=date("Ymd").'/'.md5(time().mt_rand(10,99)).".jpg";

            $fileName = Filesystem::putFileAs( 'topic', $file,$save_name);

            $url=add_http($request->server()['HTTP_X_ORIGINAL_HOST'].'/uploadImg/'.$fileName);
//                          var_dump($url);
            $data=$this->Picture($url);
//              var_dump($data);
            $data=json_decode($data,true);

            $data=json_decode($data['data'],true);

            $data['url']=$url;

            return $this->success($data,'success');

        }else {
            //没有接收到数据流

            return $this->fail('请上传图片','',Code::UPLOAD_FLIE);

        }

    }

十六进制

    public function BinaryImg(XhyRequest $request){

        $byte = @file_get_contents('php://input');

        // //将获取到的值转化为数组格式
        // $byte = json_decode($byte,true);
        //数据流不为空,则进行保存操作
        if (! empty ( $byte['FJ_img'] )) {
            // var_dump($byte);
            $byte = str_replace(' ','',$byte['FJ_img']);   //处理数据
            $byte = str_ireplace("<",'',$byte);
            $byte = str_ireplace(">",'',$byte);
            $byte=pack("H*",$byte);      //16进制转换成二进制
            $save_name=md5(time().mt_rand(10,99)).".jpg";

            $path='./uploadImg/';

            //创建并写入数据流,然后保存文件
            if ($save_name) {

                file_put_contents($path.$save_name,$byte);
                // var_dump($save_name);die;
                if (file_exists($path.$save_name)) {
                    // 拼接url
                    $url=add_http($_SERVER['HTTP_HOST'].'/'.$path.$save_name);
                    // $data['data']=$this->Picture($url);
                    outJson('200','保存成功',$url);
                } else {
                    outJson('402','仅支持jpg,png,jpeg,gif格式的图片类型上传,gif动态图片上传后不会有动态效果');
                }
            } else {
                outJson('400','操作失败');
            }
        } else {
            //没有接收到数据流
            outJson('403','请上传图片');
        }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值