ブログ
BLOG
- Home
- Blog
- #jQuery
こんちわ〜久しぶりにプログラム書いてると、久しぶりじゃなくてもよく忘れちゃう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);ふぅ〜無事ダウンロードして開けました。まじで、久々に書いてたら忘れること多いなぁ・・・・
ネットで調べると色んなやり方が出てきて、どれを参考にしたらええねん!と手当たり次第試してみました。いろいろ試してみて自分の中で一番しっくり来たやり方をブログしまっす。Jquery UI 公式 ←jQuery UIのダウンロードはコチラから!「class名="test"の入力フォームに対して、データベースから候補を引っ張ってきて表示」をやってみます。候補リストの内容は「auto_complete」テーブルのkeywordカラムに準備しておきます。まずはscript側から。ajaxでphp側に入力情報を飛ばします。$('.test').autocomplete({ source: function(req, resp){ $.ajax({ url:'auto_complete', type:'POST', cache:false, dataType:'json', data:{ str:req.term }, success:function(o){ resp(o.data); }, error:function(xhr, ts, err){ resp(['']); } }); }, //ここにAutocompleteのオプションを設定 }); 次にphp側の処理。入力キーワードに対してLIKE検索で引っ掛けます。$post = Input::only('str');//コールバックで返す用の変数(配列)$d_arr = array(); $data = DB::table('auto_complete') ->where('keyword', 'LIKE', '%'.$post['str'].'%') ->get(); if($data){ foreach($data as $d){ array_push($d_arr, $d->keyword); }} return Response::json(array('data'=>$d_arr));こんな感じ。コールバックに中身がある場合、入力フォーム部分に候補リストが表示されます。ではまた~(;´∀`)ノ