2016-09-07 6 views
0

私はAPIレスポンスからbase64文字列の形式で取得したイメージを持っています。当初、私は文字列をデータベースのmediumtextフィールドに直接保存していました。しかし、それはあまりにも多くのスペースを食べているようだ。Base64イメージをデコードしてWebサーバーに保存する - 同じものを取得して再度エンコードする

イメージをフラットファイルとして保存する方法はありますか?データベースのイメージフィールドにリンクを保存し、再度クエリを使用して取得しますか?

私はサーバ側でPHPを使用しています - AWS。私はDB空間を使い果たしているので、これが必要です。

また、base64文字列をイメージにデコードしてサーバーに保存することで、base64文字列を保存できることはわかっていますが、どうすれば同じものを取得してエンコードできますか?

+0

はい、ファイリングシステム内のファイルを保存するために非常に一般的である - あなたのデータベースでそれらをコードする遅いと面倒なバックアップになります。しかし、暫定的な解決策として、データベースBLOBをいつでも使用することができます。これらのBLOBは、base64テキストよりもスペース効率が優れています。あなたのデータベースをオフラインでコピーし、これでどのくらいのスペースを節約するのかを確認してください – halfer

答えて

1

は、ペア機能base64_encode/base64_decodeを使用して、これを取る:

$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. 
関連する問題