質問編集履歴

6

説明に追記を入れました。

2021/10/18 00:14

投稿

Fukusuke0604
Fukusuke0604

スコア555

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- 新規登録時に画像の登録がなければ、デフォルトの画像をユーザー画像として登録したいです。
5
+ 新規登録時に画像の登録がなければ、デフォルトの画像をユーザー画像として登録したいですが、画像登録無しで新規登録を行うと「Undefined index: img_name」となります
6
6
 
7
7
 
8
8
 
@@ -212,11 +212,11 @@
212
212
 
213
213
  ```PHP
214
214
 
215
- $table->string('img_name')->default('画像パス');
215
+ $table->string('img_name')->default('/storage/images/no_img.png');
216
-
216
+
217
- ```
217
+ ```
218
-
218
+
219
- とすれば、画像登録なしで新規登録した場合でも 「default('画像パス');」 が登録できると思い
219
+ とすれば、画像登録なしで新規登録した場合でも 「default('/storage/images/no_img.png');」 が登録できると思い
220
220
 
221
221
 
222
222
 
@@ -242,7 +242,7 @@
242
242
 
243
243
  <div class="userProfileImg_description">画像をアップロード</div>
244
244
 
245
- <img src="/storage/images/no_img.png"alt="サムネイル">
245
+ <img src="/storage/images/no_img.png"alt="デフォト画像">
246
246
 
247
247
  <input type="file" id="file_photo" name="img_name">
248
248
 

5

説明を修正。編集。

2021/10/18 00:14

投稿

Fukusuke0604
Fukusuke0604

スコア555

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,131 @@
6
6
 
7
7
 
8
8
 
9
+ 現状は以下のようになっています。
10
+
11
+
12
+
13
+
14
+
15
+ RegisterController.php
16
+
17
+ ```PHP
18
+
19
+ protected function create(array $data)
20
+
21
+ {
22
+
23
+
24
+
25
+ // ---ここから追加---
26
+
27
+ //引数 $data から name='img_name'を取得(アップロードするファイル情報)
28
+
29
+ $imageFile = $data['img_name'];
30
+
31
+
32
+
33
+ //$imageFileからファイル名を取得(拡張子あり)
34
+
35
+ $filenameWithExt = $imageFile->getClientOriginalName();
36
+
37
+
38
+
39
+ //拡張子を除いたファイル名を取得
40
+
41
+ $fileName = pathinfo($filenameWithExt, PATHINFO_FILENAME);
42
+
43
+
44
+
45
+ //拡張子を取得
46
+
47
+ $extension = $imageFile->getClientOriginalExtension();
48
+
49
+
50
+
51
+ // ファイル名_時間_拡張子 として設定
52
+
53
+ $fileNameToStore = $fileName.'_'.time().'.'.$extension;
54
+
55
+
56
+
57
+ //画像ファイル取得
58
+
59
+ $fileData = file_get_contents($imageFile->getRealPath());
60
+
61
+
62
+
63
+ //拡張子ごとに base64エンコード実施
64
+
65
+ if ($extension = 'jpg'){
66
+
67
+ $data_url = 'data:image/jpg;base64,'. base64_encode($fileData);
68
+
69
+ }
70
+
71
+
72
+
73
+ if ($extension = 'jpeg'){
74
+
75
+ $data_url = 'data:image/jpg;base64,'. base64_encode($fileData);
76
+
77
+ }
78
+
79
+
80
+
81
+ if ($extension = 'png'){
82
+
83
+ $data_url = 'data:image/png;base64,'. base64_encode($fileData);
84
+
85
+ }
86
+
87
+
88
+
89
+ if ($extension = 'gif'){
90
+
91
+ $data_url = 'data:image/gif;base64,'. base64_encode($fileData);
92
+
93
+ }
94
+
95
+
96
+
97
+ //画像アップロード(Imageクラス makeメソッドを使用)
98
+
99
+ $image = Image::make($data_url);
100
+
101
+
102
+
103
+ //画像を横400px, 縦400pxにリサイズし保存
104
+
105
+ $image->resize(400,400)->save(storage_path() . '/app/public/images/' . $fileNameToStore );
106
+
107
+
108
+
109
+ //createメソッドでユーザー情報を作成
110
+
111
+ return User::create([
112
+
113
+ 'name' => $data['name'],
114
+
115
+ 'email' => $data['email'],
116
+
117
+ 'password' => Hash::make($data['password']),
118
+
119
+ 'self_introduction' => $data['self_introduction'],
120
+
121
+ 'sex' => $data['sex'],
122
+
123
+ 'img_name' => $fileNameToStore,
124
+
125
+ ]);
126
+
127
+ }
128
+
129
+ ```
130
+
131
+
132
+
9
- 元々は「2021_10_10_135024_add_column_to_users_table.php」に
133
+ add_column_to_users_table.php
10
134
 
11
135
  ```PHP
12
136
 
@@ -30,131 +154,105 @@
30
154
 
31
155
 
32
156
 
33
- としていた為に、画像登録せずにアカウントを作成すると、
34
-
35
- RegisterController.phpで「Undefined index: img_name」というエラーが出る状況でした。
36
-
37
-
38
-
39
- そこで、新たにデフォルト画像を設定するためのカラムを追加する為に「2021_10_17_175707_change_img_name_default_to_set_default_img_on_users_table.php」というマイグレションファイルを作成し、
40
-
41
-
42
-
43
- ```PHP
44
-
45
- public function up()
46
-
47
- {
48
-
49
- Schema::table('users', function (Blueprint $table) {
50
-
51
- //
52
-
53
- $table->string('img_names')->default('/storage/images/no_img.png'); //デフォルト画像セット
54
-
55
- });
56
-
57
- }
58
-
59
- ```
60
-
61
- としました。
62
-
63
- ここで、「php artisan migrate」を行いました。
64
-
65
-
66
-
67
- RegisterController.phpを下記にしています。
68
-
69
- ```PHP
70
-
71
- protected function create(array $data)
72
-
73
- {
74
-
75
-
76
-
77
- //引数 $data から name='img_names'を取得(アップロードするファイル情報)
78
-
79
- $imageFile = $data['img_names'];
80
-
81
-
82
-
83
- //$imageFileからファイル名を取得(拡張子あり)
84
-
85
- $filenameWithExt = $imageFile->getClientOriginalName();
86
-
87
-
88
-
89
- //拡張子を除いたファイル名を取得
90
-
91
- $fileName = pathinfo($filenameWithExt, PATHINFO_FILENAME);
92
-
93
-
94
-
95
- //拡張子を取得
96
-
97
- $extension = $imageFile->getClientOriginalExtension();
98
-
99
-
100
-
101
- // ファイル名_時間_拡張子 として設定
102
-
103
- $fileNameToStore = $fileName.'_'.time().'.'.$extension;
104
-
105
-
106
-
107
- //画像ファイル取得
108
-
109
- $fileData = file_get_contents($imageFile->getRealPath());
110
-
111
-
112
-
113
- //拡張子ごとに base64エンコード実施
114
-
115
- if ($extension = 'jpg'){
116
-
117
- $data_url = 'data:image/jpg;base64,'. base64_encode($fileData);
118
-
119
- }
120
-
121
-
122
-
123
- if ($extension = 'jpeg'){
124
-
125
- $data_url = 'data:image/jpg;base64,'. base64_encode($fileData);
126
-
127
- }
128
-
129
-
130
-
131
- if ($extension = 'png'){
132
-
133
- $data_url = 'data:image/png;base64,'. base64_encode($fileData);
134
-
135
- }
136
-
137
-
138
-
139
- if ($extension = 'gif'){
140
-
141
- $data_url = 'data:image/gif;base64,'. base64_encode($fileData);
142
-
143
- }
144
-
145
-
146
-
147
- //画像アップロード(Imageクラス makeメソッドを使用)
148
-
149
- $image = Image::make($data_url);
150
-
151
-
152
-
153
- //画像を横400px, 縦400pxにリサイズし保存
154
-
155
- $image->resize(400,400)->save(storage_path() . '/app/public/images/' . $fileNameToStore );
156
-
157
-
157
+ viewファイルregister.blade.php
158
+
159
+ ```PHP
160
+
161
+ <label for="file_photo" class="rounded-circle userProfileImg">
162
+
163
+ <div class="userProfileImg_description">画像をアップロド</div>
164
+
165
+ <i class="fas fa-camera fa-3x"></i>
166
+
167
+ <input type="file" id="file_photo" name="img_name">
168
+
169
+ </label>
170
+
171
+ ```
172
+
173
+
174
+
175
+ User.php
176
+
177
+ ```PHP
178
+
179
+ protected $fillable = [
180
+
181
+ 'name', 'email', 'password', 'self_introduction', 'sex', 'img_name',
182
+
183
+ ];
184
+
185
+ ```
186
+
187
+
188
+
189
+ としていました。
190
+
191
+
192
+
193
+ この状況だと画像登録なしで新規登録すると、「Undefined index: img_name」 というエラーになります。
194
+
195
+
196
+
197
+
198
+
199
+
200
+
201
+ マイグレーションファイルadd_column_to_users_table.php で
202
+
203
+ ```PHP
204
+
205
+ 'img_name' => $fileNameToStore,
206
+
207
+ ```
208
+
209
+ としている箇所を
210
+
211
+
212
+
213
+ ```PHP
214
+
215
+ $table->string('img_name')->default('画像パス');
216
+
217
+ ```
218
+
219
+ とすれば、画像登録なしで新規登録した場合でも 「default('画像パス');」 が登録できると思い
220
+
221
+
222
+
223
+ 新規マイグレーションファイルを作成
224
+
225
+ ```PHP
226
+
227
+ $table->string('default_img')->default('/storage/images/no_img.png');
228
+
229
+ ```
230
+
231
+ と設定
232
+
233
+
234
+
235
+ viewファイルregister.blade.php
236
+
237
+
238
+
239
+ ```PHP
240
+
241
+ <label for="file_photo" class="rounded-circle userProfileImg">
242
+
243
+ <div class="userProfileImg_description">画像をアップロード</div>
244
+
245
+ <img src="/storage/images/no_img.png"alt="サムネイル">
246
+
247
+ <input type="file" id="file_photo" name="img_name">
248
+
249
+ </label>
250
+
251
+ ```
252
+
253
+ RegisterController.phpを以下のように修正しました。
254
+
255
+ ```PHP
158
256
 
159
257
  //createメソッドでユーザー情報を作成
160
258
 
@@ -170,68 +268,16 @@
170
268
 
171
269
  'sex' => $data['sex'],
172
270
 
173
- 'img_names' => $fileNameToStore,
271
+ 'img_name' => $fileNameToStore,
174
-
272
+
175
- ]);
273
+ 'default' => $data['/storage/images/no_img.png'],
176
-
177
- }
274
+
178
-
179
- ```
275
+ ```
180
-
181
-
182
-
183
- User.php、$fillableに'img_names'を追加しました。
276
+
184
-
185
- ```PHP
277
+
186
-
187
- protected $fillable = [
278
+
188
-
189
- 'name', 'email', 'password', 'self_introduction', 'sex', 'img_names',
190
-
191
- ];
192
-
193
- ```
194
-
195
-
196
-
197
- register.blade.phpを下記のようにしています。
198
-
199
- ```PHP
200
-
201
- <label for="file_photo" class="rounded-circle userProfileImg">
202
-
203
- <div class="userProfileImg_description userImgPreview_text xxx">画像をアップロード</div>
204
-
205
- <i class="fas fa-camera fa-3x xxx"></i>
206
-
207
- <input type="file" id="file_photo" name="img_names" class="input-image js-droparea">
208
-
209
- <img src="/storage/images/no_img.png" alt="プロフィール画像" class="show-db-image">
210
-
211
- </label>
212
-
213
- ```
214
-
215
-
216
-
217
-
218
-
219
- 新規登録時に画像の登録がなければ
220
-
221
- <img src="/storage/images/no_img.png" alt="プロフィール画像" class="show-db-image">
222
-
223
-
224
-
225
- をユーザー画像とて登録たいのですが、これでも画像登録しでユーザー登録を行うと、RegisterController.phpで「Undefined index: img_names というエラーになります。
279
+ し、これでも画像登録しで新規登録した場合「Undefined index: img_name」 というエラーが表示されます。
226
-
227
-
228
-
229
-
230
-
280
+
281
+
282
+
231
- どうすれば、新規登録時に画像の登録がなければ
283
+ どうすれば、新規登録時に画像の登録がなければデフォルトの画像を設定できるようにできるでしょうか?
232
-
233
- <img src="/storage/images/no_img.png" alt="プロフィール画像" class="show-db-imag
234
-
235
- e">
236
-
237
- をプロフィール画像として登録できるでしょうか?

4

誤字修正

2021/10/18 00:11

投稿

Fukusuke0604
Fukusuke0604

スコア555

test CHANGED
File without changes
test CHANGED
@@ -74,9 +74,9 @@
74
74
 
75
75
 
76
76
 
77
- //引数 $data から name='img_name'を取得(アップロードするファイル情報)
77
+ //引数 $data から name='img_names'を取得(アップロードするファイル情報)
78
-
78
+
79
- $imageFile = $data['img_name'];
79
+ $imageFile = $data['img_names'];
80
80
 
81
81
 
82
82
 
@@ -170,7 +170,7 @@
170
170
 
171
171
  'sex' => $data['sex'],
172
172
 
173
- 'img_name' => $fileNameToStore,
173
+ 'img_names' => $fileNameToStore,
174
174
 
175
175
  ]);
176
176
 

3

テキスト修正

2021/10/17 14:07

投稿

Fukusuke0604
Fukusuke0604

スコア555

test CHANGED
File without changes
test CHANGED
@@ -72,31 +72,91 @@
72
72
 
73
73
  {
74
74
 
75
+
76
+
75
- //Intervention Imageプロフィー画像をリサイズ
77
+ //引数 $data から name='img_name'を取得(アップロードするァイ情報)
76
-
78
+
77
- $imageFile = $data['img_names'];
79
+ $imageFile = $data['img_name'];
80
+
81
+
82
+
78
-
83
+ //$imageFileからファイル名を取得(拡張子あり)
79
-
80
-
84
+
81
- $list = FileUploadServices::fileUpload($imageFile);
85
+ $filenameWithExt = $imageFile->getClientOriginalName();
86
+
87
+
88
+
82
-
89
+ //拡張子を除いたファイル名を取得
90
+
83
-
91
+ $fileName = pathinfo($filenameWithExt, PATHINFO_FILENAME);
92
+
93
+
94
+
84
-
95
+ //拡張子を取得
96
+
85
- list($extension, $fileNameToStore, $fileData) = $list;
97
+ $extension = $imageFile->getClientOriginalExtension();
98
+
99
+
100
+
86
-
101
+ // ファイル名_時間_拡張子 として設定
102
+
87
-
103
+ $fileNameToStore = $fileName.'_'.time().'.'.$extension;
104
+
105
+
106
+
88
-
107
+ //画像ファイル取得
108
+
109
+ $fileData = file_get_contents($imageFile->getRealPath());
110
+
111
+
112
+
113
+ //拡張子ごとに base64エンコード実施
114
+
115
+ if ($extension = 'jpg'){
116
+
89
- $data_url = CheckExtensionServices::checkExtension($fileData, $extension);
117
+ $data_url = 'data:image/jpg;base64,'. base64_encode($fileData);
118
+
90
-
119
+ }
120
+
121
+
122
+
91
-
123
+ if ($extension = 'jpeg'){
124
+
125
+ $data_url = 'data:image/jpg;base64,'. base64_encode($fileData);
126
+
127
+ }
128
+
129
+
130
+
131
+ if ($extension = 'png'){
132
+
133
+ $data_url = 'data:image/png;base64,'. base64_encode($fileData);
134
+
135
+ }
136
+
137
+
138
+
139
+ if ($extension = 'gif'){
140
+
141
+ $data_url = 'data:image/gif;base64,'. base64_encode($fileData);
142
+
143
+ }
144
+
145
+
146
+
147
+ //画像アップロード(Imageクラス makeメソッドを使用)
92
148
 
93
149
  $image = Image::make($data_url);
94
150
 
151
+
152
+
95
-
153
+ //画像を横400px, 縦400pxにリサイズし保存
96
154
 
97
155
  $image->resize(400,400)->save(storage_path() . '/app/public/images/' . $fileNameToStore );
98
156
 
157
+
158
+
99
-
159
+ //createメソッドでユーザー情報を作成
100
160
 
101
161
  return User::create([
102
162
 
@@ -110,12 +170,10 @@
110
170
 
111
171
  'sex' => $data['sex'],
112
172
 
113
- 'img_names' => $data['img_names'],
173
+ 'img_name' => $fileNameToStore,
114
174
 
115
175
  ]);
116
176
 
117
-
118
-
119
177
  }
120
178
 
121
179
  ```

2

テキスト修正

2021/10/17 14:05

投稿

Fukusuke0604
Fukusuke0604

スコア555

test CHANGED
File without changes
test CHANGED
@@ -60,9 +60,11 @@
60
60
 
61
61
  としました。
62
62
 
63
+ ここで、「php artisan migrate」を行いました。
63
64
 
64
65
 
66
+
65
- RegisterController.php下記にしています。
67
+ RegisterController.php下記にしています。
66
68
 
67
69
  ```PHP
68
70
 
@@ -120,7 +122,7 @@
120
122
 
121
123
 
122
124
 
123
- User.phpに'img_names'を追加しました。
125
+ User.php、$fillableに'img_names'を追加しました。
124
126
 
125
127
  ```PHP
126
128
 

1

テキスト修正

2021/10/17 10:21

投稿

Fukusuke0604
Fukusuke0604

スコア555

test CHANGED
File without changes
test CHANGED
@@ -170,6 +170,8 @@
170
170
 
171
171
  どうすれば、新規登録時に画像の登録がなければ
172
172
 
173
- <img src="/storage/images/no_img.png" alt="プロフィール画像" class="show-db-image">
173
+ <img src="/storage/images/no_img.png" alt="プロフィール画像" class="show-db-imag
174
+
175
+ e">
174
176
 
175
177
  をプロフィール画像として登録できるでしょうか?