質問編集履歴
4
説明に追記を入れました。
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
テキスト修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
axiosでPOSTした画像が、Laravel
|
1
|
+
axiosでPOSTした画像が、Laravel DBに保存されない
|
test
CHANGED
File without changes
|
2
テキスト修正
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)で
|
159
|
+
コントローラー(ImageController.php)で画像を`storage/app/images/`に画像保存
|
160
|
+
|
161
|
+
という流れなのです。
|
158
162
|
|
159
163
|
|
160
164
|
|
165
|
+
axios.postが完了すると、コンソールには'success'と文字が返って来ているので、axios.postは完了していると思っています。
|
166
|
+
|
161
|
-
|
167
|
+
コンソールや、debugbarにエラーは出ないのに画像がDBに保存されません。
|
1
コード修正、質問内容修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
axiosでPOSTした画像
|
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");
|
43
|
+
data.append("images", blob, "image.png");
|
44
44
|
|
45
|
+
|
45
46
|
|
47
|
+
//'path'というkeyで保存
|
46
48
|
|
47
|
-
axios.post("/api/
|
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
|
-
|
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
|
-
というプログラムを書き
|
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
|
-
```
|