6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

laravelでファイルを保持する方法

Last updated at Posted at 2018-12-14

背景

私はphpのlaravelというフレームワークを使っています。
あるツールを作っている時、データベースにファイルデータを入れる前に画面遷移がありました。その時アップロードファイルをどのように保持すればいいか、苦労したので共有したいと思います。

ファイル保持の仕方

まずはrequestで送られてきたファイルデータを関数を使って読み込む。

$file = $request['file_data']

$fileData = file_get_contents($file->getRealPath())

$fileName = $file->getClientOriginalName();

これらをsessionを使ってブラウザに記憶させる。
名前空間でsessionを宣言する。

use Session;

以下のようにしてsessionに記憶させる

Session::put('file_data', $fileData]);
Session::put('file_name', $fileName);

これでsessionに記憶することができました!

ファイル取得の仕方

以下のようにして取得する

$fileData = Session::get('file_data');
$fileName = Session::get('file_name');

これらをデータベースに挿入すれば画面遷移があってもアップロードファイルを保持することができます!

苦労した点

sessionではなく、viewのinputで送ろうとしたが、input typeのfileはあくまでアップロード機能であり、valueを使うことはできません。
またsessitonにファイルデータをそのまま入れようとした場合、シリアライズ可能でないオブジェクトをキャッシュすることはできないそうです。
シリアライズというのは.....ぐぐってみると
『ソフトウェア内部で扱っているデータをそのまま、保存したり送受信することができるように変換することです。』
と記載されていました。

sessionにもキャッシュできるものできないものがあるのですね。とてもいい勉強になりました。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?