【问题标题】:How to save images url and images in laravel 5.4 with ajax?如何使用 ajax 在 laravel 5.4 中保存图像 url 和图像?
【发布时间】:2017-03-05 23:43:32
【问题描述】:

我已经连接到页面welcome.blade.php 截断图像的javascriptcropbox。单击按钮 Crop 后,我得到类似 data:image/png;base64,ivBOrwqnmdIo 的字符串...... ..................................................... ........

我编写我的函数以使用 ajax sendAvatar(img) 发送并添加到 klick 事件的底部

$('#btnCrop').on('click', function(){

    var img = cropper.getDataURL();                 
    sendAvatar(img);

})

接下来我尝试使用 ajax 发送到我的 web.php

function sendAvatar(img){ 

  var url = '{{ URL::to('getavatar') }}';
  var token = '{!! csrf_token() !!}';
    $.ajax({

       method: 'POST',
       url: url,
       data: {_token: token, img: img},
       success: function(){
       alert(img);
      }


   });

}

我有一个带有字段 avatar_url 的模型 Avatar.php

class Avatar extends Model
 {
   protected $fillable=['id','avatar_url'];
 }

现在我尝试在我的 web.php 中将图像存储在我的数据库中

但我不知道该怎么做。请帮帮我

我使用的是 laravel 5.4

【问题讨论】:

    标签: ajax image laravel


    【解决方案1】:

    就我而言,我使用了这种方法

    在我的 web.php 中

    Route::post('/getavatar', 'AvatarController@saveAvatar');
    

    在我的头像控制器中

    use App\Avatar;
    use Auth;
    
    class AvatarController extends Controller
    {
       public function saveAvatar(Request $request)
        {
           $data = $request->get('img');
    
           list($type, $data)  = explode(';', $data);
           list(, $data)       = explode(',', $data);
           $data               = base64_decode($data);
           $avatar_owner       = Auth::user()->id;
    
          $avatarName          = rand(000000000, 999999999) . '-' .         $avatar_owner .'.png';
          $avatar_uri          = file_put_contents(public_path() . '/images/' . $avatarName, $data);
    
    
           $avatar = new Avatar();
           $avatar->avatar_url = $avatarName;
    
           $avatar->save(); 
    
    }
    

    }

    【讨论】:

      【解决方案2】:

      您发送到服务器的 img 字段为字符串格式,编码为base64。你应该将base64 字符串转换为二进制格式,通过一些php 代码比如this;然后存储二进制文件,然后将二进制文件的路径放入数据库。

      【讨论】:

        【解决方案3】:

        cropper.getDataURL(); base_64 数据,因此您需要使用 php 将此数据存储到文件中

        这里是php代码示例如何做到这一点

        在您的控制器中执行此操作并将 $logoName 存储在您的数据库中

            $logoName = null;
        
            if( isset($_POST['imagebase64']) and strlen($_POST['imagebase64']) > 700 )
            {
                $data               = $_POST['imagebase64'];
                list($type, $data)  = explode(';', $data);
                list(, $data)       = explode(',', $data);
                $data               = base64_decode($data);
                $logoName           = rand(000000000, 999999999) . '.png';
                file_put_contents(public_path() . '/some_path/' . $logoName, $data);
        
            }
        

        【讨论】:

        • 谢谢我用这个例子是
        猜你喜欢
        • 2016-02-13
        • 1970-01-01
        • 1970-01-01
        • 2022-10-11
        • 2020-10-08
        • 1970-01-01
        • 2017-07-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多