質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

737閲覧

laravel イメージアップロード後に再編集ができない

ganguligonguli

総合スコア12

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/06/13 02:08

編集2018/06/13 03:07

画像をアップロード後にアップロードした画像を読み込むことができない

・PHP
・フレームワーク:laravel
・ライブラリ:laravel-admin
・DB:MySQL
・ツール:a5m2

laravel-adminの$form->imageでイメージをアップロードするフォームを作成しDBに画像をアップロードする機能を作成しています。

発生している問題・エラーメッセージ

動作確認をおこなっていたところ、フォームから登録はできるのですが、
登録したデータを再編集しようとした際に、アップロードした画像に×印がついて正しく読み込めません。

試したこと

1.a5m2からDBの値を参照したところ、文字化けを起こしていたので、テーブルの文字コードを確認しました。

テーブルのデフォルトは ⇒ DEFAULT CHARSET=utf8mb4 該当のイメージカラムは文字コードの指定無し ⇒'image' blob,

2.フォームからアップロードした際に、プロジェクトフォルダ直下のimagesフォルダに画像データが格納されていることは確認しています。

また開発者ツールから、表示が×印になってしまうページでhtmlを確認したところ、

<img src="/storage/images/~.jpg"

となっていましたが、storageフォルダにはimagesフォルダ、また画像データがないので、参照できないのでしょうか・・・。

3.laravel-admin\config\admin.phpの以下のコードにローカルホストのアドレスを指定したが、改善されず。

'disk' => 'admin', 'directory' => [ 'image' => 'images', 'file' => 'files', ], ],

4.diskメソッドを呼び出していないため、デフォルトが呼ばれているのかと思い、
laravel-admin\docs\form-upload.mdの

'disks' => [ ... , 'admin' => [ 'driver' => 'local', 'root' => public_path('upload'), 'visibility' => 'public', ], ],

のlocalをpublicに変更したが解決できず。

5.$form->image('img')->move('storage/images')と指定してみたとこと、
開発者ツールで確認したら

<img src="/storage/storage/images/~

とstorageが2回続く形になってしまい、解決できませんでした。

###参照
https://qiita.com/pikonori/items/a04066010e7380b3ee38

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

app/Admin/routes.php

に下記を追加したら自分の場合はうまく表示されました。

Route::get('storage/images/{filename}', function ($filename)
{
$path = storage_path() . '/app/images/' . $filename;

if(!File::exists($path)) abort(404); $file = File::get($path); $type = File::mimeType($path); $response = Response::make($file, 200); $response->header("Content-Type", $type); return $response;

});

投稿2018/07/30 09:42

編集2018/07/30 09:44
nasajun

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問