プログラミング学習178日目〜Laravelでアプリ作成 2つの問題が解決〜

画像がDBに登録されない&画像の保存ができない問題がようやく解決しました。参考にしたのはこのサイト。https://qiita.com/maejima_f/items/7691aa9385970ba7e3ed

コントローラーの中身はこんな感じ。

    public function store(StoreFukui $request)
   {
       $fukui = new Fukui;
       
       //アップロードするファイル名
       $upload_file_name = date("YmdHis") . $_FILES['image_file_name']['name'];
   
       //アップロードするディレクトリ名を指定
       $up_dir = 'photos/';
  
       //ファイルのアップロード
       $filename = $request->file('image_file_name')
       ->storeAs($up_dir,$upload_file_name,'public');

       $fukui->title =  $request->input('title');
       $fukui->area =  $request->input('area');
       $fukui->content = $request->input('content');
       $fukui->image_file_name = basename($filename);


         $fukui->save();

       return redirect('fukui/index');

   }

DBにファイル名が保存されなかったことについては、他のカラムと同じ様に
$fukui->image_file_name = $request->input('image_faile_name');
としていたため。formでPOSTされたファイルはinputではなくfileメソッドで取得するようです。なので
$fukui->image_file_name = $request->file('image_faile_name');
というふうにすればよいのかと思いきやこれもまた違う。
ちなみに$request->file('image_faile_name');をddで見てみると

Illuminate\Http\UploadedFile {#1264 ▼ 
-test: false 
-originalName: "omuchan.jpg" 
-mimeType: "image/jpeg"
-error: 0
#hashName: null 
path: "/private/var/folders/2j/280_gygs351glvwb61cxvp3r0000gn/T" 
filename: "phpxxMBPw" 
basename: "phpxxMBPw" 
pathname: "/private/var/folders/2j/280_gygs351glvwb61cxvp3r0000gn/T/phpxxMBPw" 
extension: "" realPath: "/private/var/folders/2j/280_gygs351glvwb61cxvp3r0000gn/T/phpxxMBPw" 
aTime: 2020-07-19 00:36:36 
mTime: 2020-07-19 00:36:36 
cTime: 2020-07-19 00:36:36 
inode: 5825549 
size: 446960 
perms: 0100600 
owner: 501 
group: 20 
type: "file" 
writable: true 
readable: true 
executable: false 
file: true 
dir: false 
link: false}

ファイルの情報がぎっしりと入っています。なので
$fukui->content = $request->input('image_faile_name');
としてもDBにアップロードするファイル名が登録されるわけではなく、何も登録されないようです。

結局の所、画像をアップロードする際のディレクトリやファイル名を指定するstoreAsメソッドで指定したファイル名でDBには登録することにしました。

先程のサイトを参考にいろいろ試した末たどり着いた結果からの推測なので若干思い違いもあるかもしれませんが、結果的にDBに登録でき、画像ファイルもアップロードできているので大きな間違いではないような気はします。

なにはともあれ、無事に2つの問題が解決したのでまずはよしとします。
そして次の問題は、画像の表示。これもまた難関です。

この記事が気に入ったらサポートをしてみませんか?