2016-09-07 2 views
0

Ich habe ein Bild, das ich in Form einer Base64-Zeichenfolge von einer API-Antwort bekomme. Anfangs - Ich habe die Zeichenfolge direkt in meiner Datenbank in einem mediumtext Feld gespeichert. Aber es scheint zu viel Platz zu essen.Base64 Image decodieren und auf einem Webserver speichern - das gleiche abrufen und erneut codieren

Gibt es eine Möglichkeit, das Bild als eine flache Datei zu speichern - Speichern Sie es in meinem Bildfeld in der Datenbank - und abrufen Sie es wieder mit einer Abfrage?

Ich benutze PHP auf der Serverseite - und AWS. Ich brauche das, weil mir der DB-Speicherplatz knapp wird.

Auch - ich weiß, wir könnten eine Base64-Zeichenfolge speichern, indem Sie es zu einem Bild dekodieren und auf dem Server speichern - aber wie kann ich dasselbe abrufen und kodieren?

+0

Ja, es ist sehr häufig Dateien im Dateisystem zu speichern - sie in der Datenbank kodiert, macht für Backups langsam und umständlich. Als Zwischenlösung können Sie jedoch Datenbank-Blobs verwenden - sie sind platzsparender als base64-Text. Kopieren Sie Ihre Datenbank offline und sehen Sie, welche Speicherkapazität Sie erhalten? – halfer

Antwort

1

Nehmet, Paar Funktionen base64_encode/base64_decode mit:

$encoded = 'SomeBase64EncodedString'; 

$decoded = base64_decode($encoded); 
// Now $decoded is the binary content of image, save it anywhere you want. 
// Example: file_put_content('/tmp/image.png', $decoded); 

// When you want to retrieve the base64 encoded string again 
$decoded = file_get_contents('/tmp/image.png'); 
$encoded = base64_encode($decoded); 

// Now you have $encoded, as a base64 encoded string. Do as you please with it.