質問編集履歴

4

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

2021/12/14 15:00

投稿

Fukusuke0604
Fukusuke0604

スコア552

test CHANGED
File without changes
test CHANGED
@@ -142,6 +142,30 @@
142
142
 
143
143
 
144
144
 
145
+ マイグレーションファイル
146
+
147
+ ```PHP
148
+
149
+ public function up()
150
+
151
+ {
152
+
153
+ Schema::create('images', function (Blueprint $table) {
154
+
155
+ $table->bigIncrements('id');
156
+
157
+ $table->string('path');
158
+
159
+ $table->timestamps();
160
+
161
+ });
162
+
163
+ }
164
+
165
+ ```
166
+
167
+
168
+
145
169
  vue.js単一コンポーネント、画像POST用のscriptコードで
146
170
 
147
171
  canvasに画像を描画し、blobデータを作成
@@ -152,16 +176,18 @@
152
176
 
153
177
 
154
178
 
179
+ コントローラー(ImageController.php)で画像を`storage/app/images/`に画像保存
180
+
181
+
182
+
155
183
  というプログラムを書きました。
156
184
 
157
185
 
158
186
 
159
- コントローラー(ImageController.php)で画像を`storage/app/images/`に画像保存
160
-
161
- という流れなのです。
162
187
 
163
188
 
164
189
 
190
+
165
- axios.postが完了すると、コンソールには'success'と文字が返って来ているので、axios.postは完了していると思っています。
191
+ 画像の投稿(axios.postが完了すると、コンソールには'success'と文字が返って来ているので、axios.postは完了していると思っています。
166
192
 
167
193
  コンソールや、debugbarにエラーは出ないのに画像がDBに保存されません。

3

テキスト修正

2021/12/14 15:00

投稿

Fukusuke0604
Fukusuke0604

スコア552

test CHANGED
@@ -1 +1 @@
1
- axiosでPOSTした画像が、Laravel API DBに保存されない
1
+ axiosでPOSTした画像が、Laravel DBに保存されない
test CHANGED
File without changes

2

テキスト修正

2021/12/14 14:58

投稿

Fukusuke0604
Fukusuke0604

スコア552

test CHANGED
File without changes
test CHANGED
@@ -42,6 +42,8 @@
42
42
 
43
43
  data.append("images", blob, "image.png");
44
44
 
45
+ // data.append("file", this.file);
46
+
45
47
 
46
48
 
47
49
  //'path'というkeyで保存
@@ -61,6 +63,8 @@
61
63
  });
62
64
 
63
65
  },
66
+
67
+ }
64
68
 
65
69
  ```
66
70
 
@@ -91,8 +95,6 @@
91
95
  public function store(Request $request)
92
96
 
93
97
  {
94
-
95
-
96
98
 
97
99
  if (request()->file) {
98
100
 
@@ -154,8 +156,12 @@
154
156
 
155
157
 
156
158
 
157
- コントローラー(ImageController.php)でpath受け取って`storage/app/images/`に画像保存
159
+ コントローラー(ImageController.php)で画像を`storage/app/images/`に画像保存
160
+
161
+ という流れなのです。
158
162
 
159
163
 
160
164
 
165
+ axios.postが完了すると、コンソールには'success'と文字が返って来ているので、axios.postは完了していると思っています。
166
+
161
- という流れなのですが、画像を送信すると、コンソールにエラーは出ないのに画像がDBに保存されません。
167
+ コンソールや、debugbarにエラーは出ないのに画像がDBに保存されません。

1

コード修正、質問内容修正

2021/12/14 14:57

投稿

Fukusuke0604
Fukusuke0604

スコア552

test CHANGED
@@ -1 +1 @@
1
- axiosでPOSTした画像Laravel API保存すると、500 (Internal Server Error)
1
+ axiosでPOSTした画像が、Laravel API DBに保存されない
test CHANGED
@@ -1,4 +1,4 @@
1
- axiosでPOSTした画像をLaravel APIで保存するプログラム以下を書きました。
1
+ axiosでPOSTした画像をLaravel APIでDBに保存するプログラム以下を書きました。
2
2
 
3
3
 
4
4
 
@@ -40,15 +40,13 @@
40
40
 
41
41
  const data = new FormData();
42
42
 
43
- data.append("images", blob, "image.png"); //'path'というkeyで保存
43
+ data.append("images", blob, "image.png");
44
44
 
45
+
45
46
 
47
+ //'path'というkeyで保存
46
48
 
47
- axios.post("/api/path", data, {
49
+ axios.post("/api/images", data)
48
-
49
- headers: { "content-type": "multipart/form-data" },
50
-
51
- })
52
50
 
53
51
  .then((res) => {
54
52
 
@@ -94,19 +92,25 @@
94
92
 
95
93
  {
96
94
 
97
- // ファイル名を取得
98
95
 
96
+
99
- $filename = $request->path->name;
97
+ if (request()->file) {
98
+
99
+ $file_name = time() . '.' . request()->file->getClientOriginalName();
100
+
101
+ request()->file->storeAs('public', $file_name);
102
+
103
+
104
+
105
+ $image = new Image();
106
+
107
+ $image->path = 'storage/' . $file_name;
108
+
109
+ $image->save();
100
110
 
101
111
 
102
112
 
103
- // blobデータをstorageに保存する
104
-
105
- //`storage/app/images/`に画像保存
106
-
107
- $path = $request->path->storeAs('images', $filename);
108
-
109
- }
113
+ }
110
114
 
111
115
  }
112
116
 
@@ -125,8 +129,6 @@
125
129
  //
126
130
 
127
131
  protected $fillable = [
128
-
129
- 'title',
130
132
 
131
133
  'path',
132
134
 
@@ -148,7 +150,7 @@
148
150
 
149
151
 
150
152
 
151
- というプログラムを書き、pathというkeyでaxios経由でPOST
153
+ というプログラムを書きました。
152
154
 
153
155
 
154
156
 
@@ -156,24 +158,4 @@
156
158
 
157
159
 
158
160
 
159
- というイメージなのですが、画像を送信すると、
161
+ という流れなのですが、画像を送信すると、コンソールにエラーは出ないのに画像がDBに保存されません。
160
-
161
- [500 (Internal Server Error)]
162
-
163
-
164
-
165
- laravel-debugbar で確認すると、下記箇所で
166
-
167
- 「Trying to get property 'name' of non-object」 というエラーがでて解決出来ません。。。
168
-
169
- ```PHP
170
-
171
- public function store(Request $request)
172
-
173
- {
174
-
175
- // ファイル名を取得
176
-
177
- $filename = $request->path->name;
178
-
179
- ```