2017-03-05 113 views
2

我在页面上连接了welcome.blade.php javascript cropbox截断图像。点击按钮后裁剪我得到像字符串的数据:image/png; base64,ivBOrwqnmdIo ............................... .................................................. ........如何使用ajax将图片网址和图片保存在laravel 5.4中?

我写我的功能与阿贾克斯sendAvatar(IMG)发送和增加克利克事件

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

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

}) 

接下来的底部我尝试发送到我的web.php与AJAX

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

回答

0

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

0

cropper.getDataURL(); < - 所以你需要使用PHP来此数据存储到文件这将返回base_64数据

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

为此在您的控制器和存储$徽标名称您数据库

$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); 

    } 
+0

感谢我用这个例子是 –

1

在我来说,我用这种方法

在我web.php

Route::post('/getavatar', '[email protected]'); 

在我AvatarController

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(); 

} 

}