最近 pukiwiki を設置し、いままでの文書を移行中です. そこでファイルのアップロードが1個ずつでかったるいので書き換えました.
コードは php のサイト https://www.php.net/manual/ja/features.file-upload.multiple.php からぱくってきました.
$ diff pukiwiki-1.5.2_utf8/plugin/attach.inc.php ./attach.inc.php 78a79,94 > > function reArrayFiles(&$file_post) > { > $file_ary = array(); > $file_count = count($file_post['name']); > $file_keys = array_keys($file_post); > > for ($i=0; $i<$file_count; $i++) { > foreach ($file_keys as $key) { > $file_ary[$i][$key] = $file_post[$key][$i]; > } > } > > return $file_ary; > } > 112c128,138 < return attach_upload($_FILES['attach_file'], $refer, $pass); --- > //return attach_upload($_FILES['attach_file'], $refer, $pass); > $str = ""; > $t = 0; > foreach(reArrayFiles($_FILES['attach_file']) as $file){ > $t = attach_upload($file, $refer, $pass); > $str .= $file['name'] . ':'. $t['msg'] . " "; > if($t['result'] == FALSE){ > break; > } > } > return array('result' => $t['result'], 'msg' => $str); 417c443 < <label for="_p_attach_file">{$_attach_messages['msg_file']}:</label> <input type="file" name="attach_file" id="_p_attach_file" /> --- > <label for="_p_attach_file">{$_attach_messages['msg_file']}:</label> <input type="file" name="attach_file[]" id="_p_attach_file" multiple/>
わたしは PHP の書式をほとんど知らないので $t = 0; が必要がわかりません. ruby だと t = nil などと宣言する必要があります. ruby ではそれがないと foreach{} 内部だけの変数になってしまい、 return で t を使うとエラーになってしまいます.
今回の対応で複数のアップロードをすると 'msg' が長くなりまして、それが大きい文字サイズで結果が表示されてしまうので編集者はちょっと見苦しくなります.
しかしこれぐらい公式で対応してほしいですね.