Ajax LaravelやPHPでファイル保存する時Base64とかでよく忘れちゃうこと
こんちわ〜
久しぶりにプログラム書いてると、久しぶりじゃなくても
よく忘れちゃうbase64の保存方法
Ajaxで非同期通信してて、Laravel側(PHP)にファイルデータ渡して
保存してるけど、保存したファイルが開けません問題
Storage::put('ファイル名', $data);
// PHPプレーンに書くなら
file_put_contents('ファイル名', base64_decode($data));
作ったファイルをダウンロードして、見てみると
ファイルは開けません!って怒られる
あれれ?って思って
あ〜そうだった。base64_decodeしてねぇや。
Storage::put('ファイル名', base64_decode($data));
// PHPプレーンに書くなら
file_put_contents('ファイル名', base64_decode($data));
ダウンロードして・・・
ファイルは開けまてん!!
あれぇぇえぇ〜?
ってなること良くあるある。
送信したファイルについてる下の呪文を取り除くのよく忘れる。
data:application/pdf;base64,
data:image/png;base64,
ってことで、よく忘れるのはこのファイルの先頭についてる呪文を削除してから
base64_decodeして保存しないとダメってことですよね。
ちゅーことで〜
今回はPDFとして〜
$str_rep = 'data:application/pdf;base64,'; $data = base64_decode(str_replace($str_rep, '', $image_data)); Storage::put($file_name.'.pdf', $data);
ふぅ〜無事ダウンロードして開けました。
まじで、久々に書いてたら忘れること多いなぁ・・・・