質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

0回答

3457閲覧

media_handle_uploadでSpecified file failed upload test.エラーが出る。

s-plus-s

総合スコア18

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2016/10/06 04:06

編集2016/10/09 07:16

wordpressで会員制のサイトを作り、メンバーにカスタム投稿タイプの記事をフロントエンドからアップロードさせるフォームを作っています。

ソースコードはショートコード化してあり、固定ページにショートコードを書き込んで呼び出してあります。

カスタムフィールドを使用しそこに画像をアップロードしたいのですが、アップロード時に
Specified file failed upload test.
というエラーが出て、カスタムフィールドに画像のIDを保存できません。
後でメディアライブラリを調べると、画像自体はアップロードできています。

送信フォーム (テキストやチェックボックス、投稿ID等がありますが省略しています。)

<form method="post" action="固定ページのurl" enctype="multipart/form-data"> <input type="file" name="img1" multiple="false"> <input type="file" name="img2" multiple="false"> <input type="file" name="img3" multiple="false"> <input type="submit" class="button" name="save" value="送信"> </form>

送信先固定ページの処理

if ( $_FILES['img1'] ) { foreach ( $_FILES as $file => $array ) { if ( $_FILES[$file]['error'] !== UPLOAD_ERR_OK ) { echo "upload error : " . $_FILES[$file]['error']; } require_once(ABSPATH . "wp-admin" . '/includes/image.php'); require_once(ABSPATH . "wp-admin" . '/includes/file.php'); require_once(ABSPATH . "wp-admin" . '/includes/media.php'); $attach_id_1 = media_handle_upload( 'img1' , $post_id ); } } if ($attach_id_1 > 0){ update_post_meta( $post_id ,'img1', $attach_id_1 ); } if ( $_FILES['img2'] ) { foreach ( $_FILES as $file => $array ) { if ( $_FILES[$file]['error'] !== UPLOAD_ERR_OK ) { echo "upload error : " . $_FILES[$file]['error']; } require_once(ABSPATH . "wp-admin" . '/includes/image.php'); require_once(ABSPATH . "wp-admin" . '/includes/file.php'); require_once(ABSPATH . "wp-admin" . '/includes/media.php'); $attach_id_2 = media_handle_upload( 'img2' , $post_id ); } } if ($attach_id_2 > 0){ update_post_meta( $post_id ,'img2', $attach_id_2 ); } if ( $_FILES['img3'] ) { foreach ( $_FILES as $file => $array ) { if ( $_FILES[$file]['error'] !== UPLOAD_ERR_OK ) { echo "upload error : " . $_FILES[$file]['error']; } require_once(ABSPATH . "wp-admin" . '/includes/image.php'); require_once(ABSPATH . "wp-admin" . '/includes/file.php'); require_once(ABSPATH . "wp-admin" . '/includes/media.php'); $attach_id_3 = media_handle_upload( 'img3' , $post_id ); } } if ($attach_id_3 > 0){ update_post_meta( $post_id ,'img3', $attach_id_3 ); }

また、データベースの

wp-postmeta

テーブルを調査したところ下記の結果でした。

meta_id 36722 post_id 6737 meta_key img1 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:{}}

さらに送信先の処理に下記コードを加え調査を行いました。

echo ini_get(‘upload_max_filesize’); echo ini_get(‘post_max_size’); echo ini_get(‘memory_limit’); echo(‘<pre>’); var_dump( $_FILES[‘img1’] ); echo(‘</pre>’); echo(‘<pre>’); var_dump( $attach_id_1 ); echo(‘</pre>’);

結果は下記です。

4M 4M 128M array(5) { [“name”]=> string(12) “image215.jpg” [“type”]=> string(10) “image/jpeg” [“tmp_name”]=> string(14) “/tmp/php0IwhdY” [“error”]=> int(0) [“size”]=> int(217336) } object(WP_Error)#14965 (2) { [“errors”]=> array(1) { [“upload_error”]=> array(1) { [0]=> string(34) “Specified file failed upload test.” } } [“error_data”]=> array(0) { } }

media_handle_uploadで画像のアップロードは出来ているのに、何故返り値にWP_Errorが返ってくるのでしょうか?

投稿のカスタムフィールドに画像のIDを保存し、それを元に画像を表示させたいのですが、カスタムフィールドにはWP_Errorの内容が保存されています。

以上です。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

s-plus-s

2016/10/07 03:26

いつも回答、ご指摘ありがとうございます。気を付けます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問