2017-03-05 54 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(); 

} 

}