web-dev-qa-db-ja.com

添付ファイルのフロントエンドに複数ファイルのアップロードフォームを作成する

特定の投稿に添付するためにユーザーが複数の画像をアップロードできるパブリックフォームを作成しようとしています。 この記事 / Golden Apples Designのおかげで、私は単一の画像を扱うことができるようになりました。

問題は、私が複数のファイルをアップロードするのに苦労しているということです。私は変わった

<form method="post" action="#" enctype="multipart/form-data" >
  <input type="file" name="upload_attachment">
  <input type="submit">
<form>

<form method="post" action="#" enctype="multipart/form-data" >
  <input type="file" multiple=multiple name="upload_attachment[]">
  <input type="submit">
<form>

これで$ _FILES配列は異なるフォーマットになり、ファイルハンドラはそれを適切に処理しません。正しい方法で配列をループ処理してファイルに希望するフォーマットを提供する方法を見つけ出すのを手伝ってくれる人はいますか

3
Dalton

これはそれを行うための最も洗練された方法ではないかもしれません($ _FILESグローバルを上書きすることさえ許されるかどうか私にはわかりません)が、これはうまくいくようです:

global $post;
if ($_FILES) {
    $files = $_FILES['upload_attachment'];
    foreach ($files['name'] as $key => $value) {
        if ($files['name'][$key]) {
            $file = array(
            'name'     => $files['name'][$key],
            'type'     => $files['type'][$key],
            'tmp_name' => $files['tmp_name'][$key],
            'error'    => $files['error'][$key],
            'size'     => $files['size'][$key]
            );

            $_FILES = array("upload_attachment" => $file);

            foreach ($_FILES as $file => $array) {
                $newupload = wp_insert_attachment($file,$post->ID);
            }                                   
        }
    }
}
2
Dalton