2017-03-05 6 views
2

Ich habe auf der Seite wince.blade.php Javascript cropbox verbunden, die das Bild schneidet. Nach dem Klick auf den Button Crop bekomme ich die Zeichenfolge wie Daten: image/png; base64, ivBOrwqnmdIo ............................... .................................................. ........Wie speichern Bilder URL und Bilder in Laravel 5.4 mit Ajax?

ich meine Funktion schreiben, mit ajax sendAvatar (img) und dem Hinzufügen nach unten klicke Ereignisse

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

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

}) 

Next i meinen web.php zu senden versuchen, senden mit

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


    }); 

} 

ich habe ein Modell Avatar.php mit Feld avatar_url

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

ich versuche, in meinem web.php Laden, um das Bild in meinem db

Aber ich don t wissen, wie dies zu tun. Bitte helfen Sie mir

Ich bin Verwendung Laravel 5.4

Antwort

0

Das img Feld, das Sie an den Server senden ist im String-Format und codiert als base64. Sie sollten base64 Zeichenfolge in Binärformat über einige PHP-Code wie this konvertieren; Speichern Sie dann die Binärdatei und fügen Sie den Pfad der Binärdatei in die Datenbank ein.

0

cropper.getDataURL(); < - diese gibt base_64 Daten, so dass Sie diese Daten in die Datei speichern, müssen php

mit

hier ist PHP-Code-Beispiel, wie diese

tun dies in Ihrem Controller zu tun und speichern $ logoName in Ihrem

Datenbank
$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

Dank habe ich dieses Beispiel –

1

In meinem Fall habe ich diese Annäherung

In meinem web.php

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

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

} 

}