Überprüfen, die eine base64-dekodierte Bild in laravel

Ich versuche, ein Bild aus einer PUT-request zum aktualisieren eines Benutzer-Bild(über Postboten) und machen es passieren durch eine Validierung in Laravel 5.2, für die Herstellung der call-in postman verwenden Sie die folgende url:

http://localhost:8000/api/v1/users?_method=PUT

und senden Sie die Bild-Zeichenfolge in den Körper, mit einem json-so:

{
    "picture" : "data:image/png;base64,this-is-the-base64-encode-string"
}

In der controller versuchen, eine Menge von verschiedenen Möglichkeiten für die Dekodierung der Bild-und versuchen, passieren die Validierung:

  1. Zuerst habe ich versucht, dieses:
    $data = request->input('picture');
    $data = str_replace('data:image/png;base64,', '', $data);
    $data = str_replace(' ', '+', $data);
    $image = base64_decode($data);
    $file = app_path() . uniqid() . '.png';
    $success = file_put_contents($file, $image);
  2. Dann habe ich versucht, dieses:
    list($type, $data) = explode(';', $data);
    list(, $data) = explode(',', $data);
    $data = base64_decode($data);
    $typeFile = explode(':', $type);
    $extension = explode('/', $typeFile[1]);
    $ext = $extension[1];
    Storage::put(public_path() . '/prueba.' . $ext, $data);
    $contents = Storage::get(base_path() . '/public/prueba.png');
  3. Versuchen, die intervention image library (http://image.intervention.io/) und don ' T pass:
    $image = Image::make($data);
    $image->save(app_path() . 'test2.png');
    $image = Image::make(app_path() . 'test1.png');

Dies ist die Validierung im controller:

    $data = [
        'picture' => $image,
        'first_name' => $request->input('first_name'),
        'last_name' => $request->input('last_name')
    ];

    $validator = Validator::make($data, User::rulesForUpdate());
    if ($validator->fails()) {
        return $this->respondFailedParametersValidation('Parameters failed validation for a user picture');
    } 

dies ist die überprüfung der Benutzer-Modell:

public static function rulesForUpdate() {
    return [
        'first_name' => 'max:255',
        'last_name' => 'max:255',
        'picture' => 'image|max:5000|mimes:jpeg,png'
    ];
}   
Ich bin nicht folgenden. Was ist das Problem, das Sie gegenüberstellen?
Cant pass die Validierung für ein Bild erstellt aus einem base64-string

InformationsquelleAutor Jorge Almonacid | 2016-08-19

Schreibe einen Kommentar