プログラミング学習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つの問題が解決したのでまずはよしとします。
そして次の問題は、画像の表示。これもまた難関です。
この記事が気に入ったらサポートをしてみませんか?