質問編集履歴

5

ショートコード化してある旨を省略していたので追記

2016/10/09 07:16

投稿

s-plus-s
s-plus-s

スコア18

test CHANGED
File without changes
test CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
 
4
4
 
5
+ ソースコードはショートコード化してあり、固定ページにショートコードを書き込んで呼び出してあります。
6
+
7
+
8
+
5
9
  カスタムフィールドを使用しそこに画像をアップロードしたいのですが、アップロード時に
6
10
 
7
11
  Specified file failed upload test.
@@ -16,7 +20,7 @@
16
20
 
17
21
  ```ここに言語を入力
18
22
 
19
- <form method="post" action="save.php" enctype="multipart/form-data">
23
+ <form method="post" action="固定ページのurl" enctype="multipart/form-data">
20
24
 
21
25
  <input type="file" name="img1" multiple="false">
22
26
 
@@ -32,7 +36,7 @@
32
36
 
33
37
 
34
38
 
35
- 送信先の処理
39
+ 送信先固定ページの処理
36
40
 
37
41
  ```ここに言語を入力
38
42
 

4

タイトルの変更

2016/10/09 07:16

投稿

s-plus-s
s-plus-s

スコア18

test CHANGED
@@ -1 +1 @@
1
- wordpressでフロントから画像をアップロードしたいが、アップロードエラーが出る
1
+ media_handle_uploadでSpecified file failed upload test.エラーが出る
test CHANGED
File without changes

3

全体のコードを修正しました。

2016/10/06 11:26

投稿

s-plus-s
s-plus-s

スコア18

test CHANGED
File without changes
test CHANGED
@@ -4,11 +4,11 @@
4
4
 
5
5
  カスタムフィールドを使用しそこに画像をアップロードしたいのですが、アップロード時に
6
6
 
7
- upload error : 4
7
+ Specified file failed upload test.
8
8
 
9
9
  というエラーが出て、カスタムフィールドに画像のIDを保存できません。
10
10
 
11
-
11
+ 後でメディアライブラリを調べると、画像自体はアップロードできています。
12
12
 
13
13
 
14
14
 
@@ -52,7 +52,7 @@
52
52
 
53
53
  require_once(ABSPATH . "wp-admin" . '/includes/media.php');
54
54
 
55
- $attach_id_1 = media_handle_upload( $file , $post_id );
55
+ $attach_id_1 = media_handle_upload( 'img1' , $post_id );
56
56
 
57
57
  }
58
58
 
@@ -82,7 +82,7 @@
82
82
 
83
83
  require_once(ABSPATH . "wp-admin" . '/includes/media.php');
84
84
 
85
- $attach_id_2 = media_handle_upload( $file , $post_id );
85
+ $attach_id_2 = media_handle_upload( 'img2' , $post_id );
86
86
 
87
87
  }
88
88
 
@@ -112,7 +112,7 @@
112
112
 
113
113
  require_once(ABSPATH . "wp-admin" . '/includes/media.php');
114
114
 
115
- $attach_id_3 = media_handle_upload( $file , $post_id );
115
+ $attach_id_3 = media_handle_upload( 'img3' , $post_id );
116
116
 
117
117
  }
118
118
 
@@ -128,22 +128,6 @@
128
128
 
129
129
 
130
130
 
131
- 上記のフォームで送信、保存を行うと、
132
-
133
-
134
-
135
- ```ここに言語を入力
136
-
137
- upload error : 4
138
-
139
- ```
140
-
141
-
142
-
143
- が出力されます。
144
-
145
- ファイルがありません、というエラーですがなぜかダッシュボードのメディアを確認すると画像はアップロードされています。
146
-
147
131
 
148
132
 
149
133
 
@@ -174,7 +158,7 @@
174
158
 
175
159
  meta_key img1
176
160
 
177
- meta_value O:8:"WP_Error":2:{s:6:"errors";a:1:{s:12:"upload_error";a:1:{i:0;s:21:"No file was uploaded.";}}s:10:"error_data";a:0:{}}
161
+ meta_value O:8:"WP_Error":2:{s:6:"errors";a:1:{s:12:"upload_error";a:1:{i:0;s:34:"Specified file failed upload test.";}}s:10:"error_data";a:0:{}}
178
162
 
179
163
  ```
180
164
 
@@ -186,19 +170,27 @@
186
170
 
187
171
  ```ここに言語を入力
188
172
 
189
- echo ini_get('upload_max_filesize');
173
+ echo ini_get(upload_max_filesize);
190
-
174
+
191
- echo ini_get('post_max_size');
175
+ echo ini_get(post_max_size);
192
-
176
+
193
- echo ini_get('memory_limit');
177
+ echo ini_get(memory_limit);
194
-
195
-
196
-
178
+
179
+
180
+
197
- echo('<pre>');
181
+ echo(<pre>);
182
+
183
+ var_dump( $_FILES[‘img1’] );
184
+
185
+ echo(‘</pre>’);
186
+
187
+
188
+
189
+ echo(‘<pre>’);
198
190
 
199
191
  var_dump( $attach_id_1 );
200
192
 
201
- echo('</pre>');
193
+ echo(</pre>);
202
194
 
203
195
  ```
204
196
 
@@ -208,146 +200,80 @@
208
200
 
209
201
  4M
210
202
 
211
- 4M
203
+ 4M
212
204
 
213
205
  128M
214
206
 
215
207
 
216
208
 
217
- object(WP_Error)#14958 (2) {
218
-
219
- ["errors"]=>
220
-
221
- array(1) {
222
-
223
- ["upload_error"]=>
224
-
225
- array(1) {
226
-
227
- [0]=>
228
-
229
- string(21) "No file was uploaded."
230
-
231
- }
232
-
233
- }
234
-
235
- ["error_data"]=>
236
-
237
- array(0) {
238
-
239
- }
240
-
241
- }
242
-
243
- ```
244
-
245
-
246
-
247
-
248
-
249
-
250
-
251
- media_handle_upload()
252
-
253
-
254
-
255
- はアップロードできない場合、WP_Errorを返します。またWP_Error内に”No file was uploaded.”とあるので"upload error : 4"というエラーとも合致します。
256
-
257
-
258
-
259
- お教えいただきたい点は2点あります。
260
-
261
- 0. 上記エラーが出ているのにもかかわらずメディアライブラリ内に画像がアップロードできているのはなぜでしょうか?
262
-
263
- 1. upload error : 4が起こる原因がわかりません。メディアライブラリ内にアップロード画像が確認出来るということは、ファイルは送信されているはずなのですが何故エラーが出るのでしょうか?
209
+ array(5) {
210
+
211
+ [“name]=>
212
+
213
+ string(12) “image215.jpg”
214
+
215
+ [“type]=>
216
+
217
+ string(10) “image/jpeg”
218
+
219
+ [“tmp_name”]=>
220
+
221
+ string(14) “/tmp/php0IwhdY”
222
+
223
+ [“error”]=>
224
+
225
+ int(0)
226
+
227
+ [“size]=>
228
+
229
+ int(217336)
230
+
231
+ }
232
+
233
+
234
+
235
+ object(WP_Error)#14965 (2) {
236
+
237
+ [“errors”]=>
238
+
239
+ array(1) {
240
+
241
+ [“upload_error”]=>
242
+
243
+ array(1) {
244
+
245
+ [0]=>
246
+
247
+ string(34) “Specified file failed upload test.”
248
+
249
+ }
250
+
251
+ }
252
+
253
+ [“error_data”]=>
254
+
255
+ array(0) {
256
+
257
+ }
258
+
259
+ }
260
+
261
+ ```
262
+
263
+
264
+
265
+ media_handle_uploadで画像のアップロードは出来ているのに、何故返り値にWP_Errorが返ってくるのでしょうか?
266
+
267
+
268
+
269
+ 投稿のカスタムフィールドに画像のIDを保存し、それを元に画像を表示させたいのですが、カスタムフィールドにはWP_Errorの内容が保存されています。
270
+
271
+
272
+
273
+
264
274
 
265
275
 
266
276
 
267
277
  以上です。
268
278
 
269
279
  よろしくお願いいたします。
270
-
271
-
272
-
273
-
274
-
275
- 追記
276
-
277
- 下記コードを調査のためsave.phpに加えました。
278
-
279
- ```ここに言語を入力
280
-
281
- echo('<pre>');
282
-
283
- var_dump( $_FILES['img1'] );
284
-
285
- echo('</pre>');
286
-
287
- ```
288
-
289
- 結果は下記でした。
290
-
291
- ```ここに言語を入力
292
-
293
- array(5) {
294
-
295
- ["name"]=>
296
-
297
- string(12) "f4b7d9f4.JPG"
298
-
299
- ["type"]=>
300
-
301
- string(10) "image/jpeg"
302
-
303
- ["tmp_name"]=>
304
-
305
- string(14) "/tmp/php9MRVai"
306
-
307
- ["error"]=>
308
-
309
- int(0)
310
-
311
- ["size"]=>
312
-
313
- int(285101)
314
-
315
- }
316
-
317
- ```
318
-
319
-
320
-
321
- ```ここに言語を入力
322
-
323
- ["error"]=>int(0)
324
-
325
- ```
326
-
327
- とあるのに
328
-
329
-
330
-
331
- ```ここに言語を入力
332
-
333
- foreach ( $_FILES as $file => $array ) {
334
-
335
- if ( $_FILES[$file]['error'] !== UPLOAD_ERR_OK ) {
336
-
337
- echo "upload error : " . $_FILES[$file]['error'];
338
-
339
- }
340
-
341
- ```
342
-
343
- の部分で
344
-
345
- ```ここに言語を入力
346
-
347
- upload error : 4
348
-
349
- ```
350
-
351
-
352
-
353
- と出力されます。何故でしょうか?

2

コードを追記しました。

2016/10/06 11:25

投稿

s-plus-s
s-plus-s

スコア18

test CHANGED
File without changes
test CHANGED
@@ -20,6 +20,10 @@
20
20
 
21
21
  <input type="file" name="img1" multiple="false">
22
22
 
23
+ <input type="file" name="img2" multiple="false">
24
+
25
+ <input type="file" name="img3" multiple="false">
26
+
23
27
  <input type="submit" class="button" name="save" value="送信">
24
28
 
25
29
  </form>
@@ -60,6 +64,66 @@
60
64
 
61
65
  }
62
66
 
67
+
68
+
69
+ if ( $_FILES['img2'] ) {
70
+
71
+ foreach ( $_FILES as $file => $array ) {
72
+
73
+ if ( $_FILES[$file]['error'] !== UPLOAD_ERR_OK ) {
74
+
75
+ echo "upload error : " . $_FILES[$file]['error'];
76
+
77
+ }
78
+
79
+ require_once(ABSPATH . "wp-admin" . '/includes/image.php');
80
+
81
+ require_once(ABSPATH . "wp-admin" . '/includes/file.php');
82
+
83
+ require_once(ABSPATH . "wp-admin" . '/includes/media.php');
84
+
85
+ $attach_id_2 = media_handle_upload( $file , $post_id );
86
+
87
+ }
88
+
89
+ }
90
+
91
+ if ($attach_id_2 > 0){
92
+
93
+ update_post_meta( $post_id ,'img2', $attach_id_2 );
94
+
95
+ }
96
+
97
+
98
+
99
+ if ( $_FILES['img3'] ) {
100
+
101
+ foreach ( $_FILES as $file => $array ) {
102
+
103
+ if ( $_FILES[$file]['error'] !== UPLOAD_ERR_OK ) {
104
+
105
+ echo "upload error : " . $_FILES[$file]['error'];
106
+
107
+ }
108
+
109
+ require_once(ABSPATH . "wp-admin" . '/includes/image.php');
110
+
111
+ require_once(ABSPATH . "wp-admin" . '/includes/file.php');
112
+
113
+ require_once(ABSPATH . "wp-admin" . '/includes/media.php');
114
+
115
+ $attach_id_3 = media_handle_upload( $file , $post_id );
116
+
117
+ }
118
+
119
+ }
120
+
121
+ if ($attach_id_3 > 0){
122
+
123
+ update_post_meta( $post_id ,'img3', $attach_id_3 );
124
+
125
+ }
126
+
63
127
  ```
64
128
 
65
129
 

1

追記しました。

2016/10/06 06:43

投稿

s-plus-s
s-plus-s

スコア18

test CHANGED
File without changes
test CHANGED
@@ -203,3 +203,87 @@
203
203
  以上です。
204
204
 
205
205
  よろしくお願いいたします。
206
+
207
+
208
+
209
+
210
+
211
+ 追記
212
+
213
+ 下記コードを調査のためsave.phpに加えました。
214
+
215
+ ```ここに言語を入力
216
+
217
+ echo('<pre>');
218
+
219
+ var_dump( $_FILES['img1'] );
220
+
221
+ echo('</pre>');
222
+
223
+ ```
224
+
225
+ 結果は下記でした。
226
+
227
+ ```ここに言語を入力
228
+
229
+ array(5) {
230
+
231
+ ["name"]=>
232
+
233
+ string(12) "f4b7d9f4.JPG"
234
+
235
+ ["type"]=>
236
+
237
+ string(10) "image/jpeg"
238
+
239
+ ["tmp_name"]=>
240
+
241
+ string(14) "/tmp/php9MRVai"
242
+
243
+ ["error"]=>
244
+
245
+ int(0)
246
+
247
+ ["size"]=>
248
+
249
+ int(285101)
250
+
251
+ }
252
+
253
+ ```
254
+
255
+
256
+
257
+ ```ここに言語を入力
258
+
259
+ ["error"]=>int(0)
260
+
261
+ ```
262
+
263
+ とあるのに
264
+
265
+
266
+
267
+ ```ここに言語を入力
268
+
269
+ foreach ( $_FILES as $file => $array ) {
270
+
271
+ if ( $_FILES[$file]['error'] !== UPLOAD_ERR_OK ) {
272
+
273
+ echo "upload error : " . $_FILES[$file]['error'];
274
+
275
+ }
276
+
277
+ ```
278
+
279
+ の部分で
280
+
281
+ ```ここに言語を入力
282
+
283
+ upload error : 4
284
+
285
+ ```
286
+
287
+
288
+
289
+ と出力されます。何故でしょうか?