teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

修正

2021/02/18 08:25

投稿

Airi.
Airi.

スコア8

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,7 @@
1
1
  ##icon画像を保存したいのですが、DBにはファイル名が保存されるものの、画像そのものがstorage/public/imagesへ保存されません。
2
2
 
3
- *** 解決済 解決した内容はページ最後に追記します。(2020/2/18)**
3
+ *** 解決済 * 解決した内容はページ最後に追記します。(2020/2/18)**
4
+ ※ 回答者様のアドバイスを受けて、DBのimageカラムへは画像のファイル名ではなく自動で生成される文字列で表示する方法を取ることにしました。
4
5
 
5
6
  ###* コード
6
7
 
@@ -209,13 +210,15 @@
209
210
  ```
210
211
  protected function create(array $data)
211
212
  {
212
- $file_name = $data['image']->getClientOriginalName();
213
+
213
- $path = $data['image']->storeAs('public/image', $file_name);
214
+ $path = $data['image']->store('public/image');
214
215
 
215
216
  $user = User::create([
216
217
  'name' => $data['name'],
217
218
  'profile' => $data['profile'],
218
- 'image' => basename($path),
219
+ 'image' => $path,
220
+ // 'image' => basename($path),←ファイル名を保存すると名前がかぶった時に上書きされてしまう。
221
+ // 'image' => $data['image'], ←'tmp_name'が保存されてしまう。
219
222
  'email' => $data['email'],
220
223
  'password' => Hash::make($data['password']),
221
224
  ]);
@@ -244,4 +247,19 @@
244
247
  <!-- 省略 -->
245
248
  </form>
246
249
  <!-- 省略 -->
250
+ ```
251
+ > 4. view/user/show.blade.php
252
+
253
+ 表示させる部分 <img src=**"{{Storage::url($user->image)}}"** alt="画像だよ" class="img-icon">
254
+ ```
255
+ <tr class="row">
256
+ <th class="col-4">icon</th>
257
+ <td class="col-6">
258
+ <div class="box-img">
259
+ <img src="{{Storage::url($user->image)}}" alt="画像だよ" class="img-icon">
260
+ {{-- <!-- <img src="../storage/image/{{$user->image}}" alt="画像だよ" class="img-icon"> --> --}}
261
+ {{-- <!-- <img src="/storage/{{$user->image}}" alt="画像だよ" class="img-icon"> -->--}}
262
+ </div>
263
+ </td>
264
+ </tr>
247
265
  ```

2

解決した内容を目立たせた

2021/02/18 08:25

投稿

Airi.
Airi.

スコア8

title CHANGED
File without changes
body CHANGED
@@ -202,7 +202,7 @@
202
202
  **どのような手順で問題を解決すれば良いかなどアドバイスや、回答をいただけますと幸いです。**
203
203
  **何卒よろしくお願いいたします。**
204
204
 
205
- ## ★ 解決できた記述(変更箇所のみ)
205
+ ## ★★★ 解決できた記述(変更箇所のみ)
206
206
 
207
207
  > 1. RegisterController.phpの記述
208
208
 

1

解決方法を記述しました。

2021/02/18 07:49

投稿

Airi.
Airi.

スコア8

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,7 @@
1
1
  ##icon画像を保存したいのですが、DBにはファイル名が保存されるものの、画像そのものがstorage/public/imagesへ保存されません。
2
2
 
3
+ *** 解決済 解決した内容はページ最後に追記します。(2020/2/18)**
4
+
3
5
  ###* コード
4
6
 
5
7
  ** 1. Auth/RegisterController.php**【Controller】
@@ -159,9 +161,9 @@
159
161
  @csrf
160
162
  <!-- 省略 -->
161
163
  <div class="form-group row">
162
- <label for="my-icon" class="col-md-4 col-form-label text-md-right">Example file input</label>
164
+ <label for="image" class="col-md-4 col-form-label text-md-right">Example file input</label>
163
165
  <div class="col-md-6">
164
- <input type="file" class="form-control-file" id="my-icon" name="my-icon" accept="image/png, image/jpeg">
166
+ <input type="file" class="form-control-file" id="image" name="image" accept="image/png, image/jpeg">
165
167
  </div>
166
168
  </div>
167
169
  <!-- 省略 -->
@@ -198,4 +200,48 @@
198
200
 
199
201
  **2日間悩みに悩みましたが、どうしても画像をローカルに保存することができません。**
200
202
  **どのような手順で問題を解決すれば良いかなどアドバイスや、回答をいただけますと幸いです。**
201
- **何卒よろしくお願いいたします。**
203
+ **何卒よろしくお願いいたします。**
204
+
205
+ ## ★ 解決できた記述(変更箇所のみ)
206
+
207
+ > 1. RegisterController.phpの記述
208
+
209
+ ```
210
+ protected function create(array $data)
211
+ {
212
+ $file_name = $data['image']->getClientOriginalName();
213
+ $path = $data['image']->storeAs('public/image', $file_name);
214
+
215
+ $user = User::create([
216
+ 'name' => $data['name'],
217
+ 'profile' => $data['profile'],
218
+ 'image' => basename($path),
219
+ 'email' => $data['email'],
220
+ 'password' => Hash::make($data['password']),
221
+ ]);
222
+
223
+ return $user;
224
+ }
225
+ ```
226
+ > 2. User.phpの記述
227
+
228
+ 変更なし
229
+
230
+ > 3. auth/register.blade.php
231
+
232
+ ```
233
+ <!-- my-iconを全てimageへ変更(カラム名と同じ) -->
234
+ <!-- 省略 -->
235
+ <form method="POST" action="{{ route('register') }}" enctype="multipart/form-data">
236
+ @csrf
237
+ <!-- 省略 -->
238
+ <div class="form-group row">
239
+ <label for="image" class="col-md-4 col-form-label text-md-right">Example file input</label>
240
+ <div class="col-md-6">
241
+ <input type="file" class="form-control-file" id="image" name="image" accept="image/png, image/jpeg">
242
+ </div>
243
+ </div>
244
+ <!-- 省略 -->
245
+ </form>
246
+ <!-- 省略 -->
247
+ ```