<input id="upfile" type="file" name="upfile" size="40">
を使って、ファイル(画像)を選択してアップロードはできるんですが、
<input type="file" name="upfile[]" size="40" multiple>
で複数指定を可能にすると、ファイルがアップロードされなくなります。
アップロード
php
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>アップロード処理</title> 6 </head> 7 <body> 8 <!-- アップロード時はenctype属性に注意 --> 9 <form method="POST" action="file2.php" enctype="multipart/form-data"> 10 <label for="upfile">ファイルのパス:</label> 11 <!-- アップロード可能ファイルサイズ指定 --> 12 <input type="hidden" name="max_file_size" value="1000000"> 13 <!-- ファイルの選択ボックス --> 14 <!-- <input id="upfile" type="file" name="upfile" size="40"> --> 15 <input type="file" name="upfile[]" size="40" multiple> 16 <input type="submit" value="アップロード"> 17 </form> 18 </body> 19</html>
処理
php
1<?php 2// アップロードファイルの情報を取得 3$ext = pathinfo($_FILES['upfile']['name']); 4// アップロードを許可する拡張子を配列で定義 5$perm = ['gif', 'jpg', 'jpeg', 'png']; 6// アップロード処理そのものの成否をチェック 7if ($_FILES['upfile']['error'] !== UPLOAD_ERR_OK){ 8 $msg = [ 9 UPLOAD_ERR_INI_SIZE => 'php.iniのupload_max_filesizeの制限を越えています。', 10 UPLOAD_ERR_FORM_SIZE => 'HTMLのMAX_FILE_SIZE 制限を越えています。', 11 UPLOAD_ERR_PARTIAL => 'ファイルが一部しかアップロードされていません。', 12 UPLOAD_ERR_NO_FILE => 'ファイルはアップロードされませんでした。', 13 UPLOAD_ERR_NO_TMP_DIR => '一時保存フォルダが存在しません。', 14 UPLOAD_ERR_CANT_WRITE => 'ディスクへの書き込みに失敗しました。', 15 UPLOAD_ERR_EXTENSION => '拡張モジュールによってアップロードが中断されました。', 16 ]; 17 $err_msg = $msg[$_FILES['upfile']['error']]; 18 // 拡張時が許可されたものであるかを判定 19} elseif (!in_array(strtolower($ext['extension']), $perm)){ 20 $err_msg = '画像以外のファイルはアップロードできません。'; 21 // ファイルの内容が画像であるかチェック 22} elseif (!@getimagesize($_FILES['upfile']['tmp_name'])){ 23 $err_msg = 'ファイルの内容が画像ではありません。'; 24 // エラーチェックを終えたら、アップロード処理 25} else { 26 $src = $_FILES['upfile']['tmp_name']; 27 // $dest = mb_convert_encoding($_FILES['upfile']['name'], 'SJIS-WIN', 'UTF-8'); 28 $dest = $_FILES['upfile']['name']; 29 // アップロードファイルのアプロード先 30 if (!move_uploaded_file($src, 'doc/'.$dest)){ 31 $err_msg = 'アップロード処理に失敗しました。'; 32 } 33} 34// エラー発生時はエラーメッセージを表示 35if (isset($err_msg)){ 36 die('<div style="color:Red;">'.$err_msg.'</div>'); 37} 38// 処理成功時はフォームにリダイレクト 39header('Location: http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/file1.php');
追記
エラーコードを追記します。
html
1array(1) { 2 ["upfile"]=> 3 array(5) { 4 ["name"]=> 5 array(2) { 6 [0]=> 7 string(36) "bandicam 2016-11-12 18-50-46-457.jpg" 8 [1]=> 9 string(36) "bandicam 2016-11-12 22-25-08-417.jpg" 10 } 11 ["type"]=> 12 array(2) { 13 [0]=> 14 string(10) "image/jpeg" 15 [1]=> 16 string(10) "image/jpeg" 17 } 18 ["tmp_name"]=> 19 array(2) { 20 [0]=> 21 string(51) "C:\Users\hasegawaryo\AppData\Local\Temp\php76EE.tmp" 22 [1]=> 23 string(51) "C:\Users\hasegawaryo\AppData\Local\Temp\php76EF.tmp" 24 } 25 ["error"]=> 26 array(2) { 27 [0]=> 28 int(0) 29 [1]=> 30 int(0) 31 } 32 ["size"]=> 33 array(2) { 34 [0]=> 35 int(30272) 36 [1]=> 37 int(67484) 38 } 39 } 40} 41 42Notice: Undefined index: upfile[$loop] in C:\Users\hasegawaryo\Desktop\php\Smarty\postdata\file\file2.php on line 15 43 44Warning: Illegal offset type in C:\Users\hasegawaryo\Desktop\php\Smarty\postdata\file\file2.php on line 29 45 46Notice: Undefined index: upfile[$loop] in C:\Users\hasegawaryo\Desktop\php\Smarty\postdata\file\file2.php on line 15 47 48Warning: Illegal offset type in C:\Users\hasegawaryo\Desktop\php\Smarty\postdata\file\file2.php on line 29
追記2
html
1array(1) { 2 ["upfile"]=> 3 array(5) { 4 ["name"]=> 5 array(2) { 6 [0]=> 7 string(36) "bandicam 2016-11-12 18-50-46-457.jpg" 8 [1]=> 9 string(36) "bandicam 2016-11-12 22-25-08-417.jpg" 10 } 11 ["type"]=> 12 array(2) { 13 [0]=> 14 string(10) "image/jpeg" 15 [1]=> 16 string(10) "image/jpeg" 17 } 18 ["tmp_name"]=> 19 array(2) { 20 [0]=> 21 string(50) "C:\Users\hasegawaryo\AppData\Local\Temp\php72A.tmp" 22 [1]=> 23 string(50) "C:\Users\hasegawaryo\AppData\Local\Temp\php72B.tmp" 24 } 25 ["error"]=> 26 array(2) { 27 [0]=> 28 int(0) 29 [1]=> 30 int(0) 31 } 32 ["size"]=> 33 array(2) { 34 [0]=> 35 int(30272) 36 [1]=> 37 int(67484) 38 } 39 } 40} 41int(0) 42array(7) { 43 [1]=> 44 string(62) "php.iniのupload_max_filesizeの制限を越えています。" 45 [2]=> 46 string(51) "HTMLのMAX_FILE_SIZE 制限を越えています。" 47 [3]=> 48 string(69) "ファイルが一部しかアップロードされていません。" 49 [4]=> 50 string(60) "ファイルはアップロードされませんでした。" 51 [6]=> 52 string(48) "一時保存フォルダが存在しません。" 53 [7]=> 54 string(54) "ディスクへの書き込みに失敗しました。" 55 [8]=> 56 string(78) "拡張モジュールによってアップロードが中断されました。" 57} 58array(5) { 59 ["name"]=> 60 array(2) { 61 [0]=> 62 string(36) "bandicam 2016-11-12 18-50-46-457.jpg" 63 [1]=> 64 string(36) "bandicam 2016-11-12 22-25-08-417.jpg" 65 } 66 ["type"]=> 67 array(2) { 68 [0]=> 69 string(10) "image/jpeg" 70 [1]=> 71 string(10) "image/jpeg" 72 } 73 ["tmp_name"]=> 74 array(2) { 75 [0]=> 76 string(50) "C:\Users\hasegawaryo\AppData\Local\Temp\php72A.tmp" 77 [1]=> 78 string(50) "C:\Users\hasegawaryo\AppData\Local\Temp\php72B.tmp" 79 } 80 ["error"]=> 81 array(2) { 82 [0]=> 83 int(0) 84 [1]=> 85 int(0) 86 } 87 ["size"]=> 88 array(2) { 89 [0]=> 90 int(30272) 91 [1]=> 92 int(67484) 93 } 94} 95array(2) { 96 [0]=> 97 int(0) 98 [1]=> 99 int(0) 100} 101int(0) 102 103Notice: Undefined offset: 0 in C:\Users\hasegawaryo\Desktop\php\Smarty\postdata\�t�@�C���̃A�b�v���[�h\file2.php on line 39 104 105Notice: Undefined offset: 0 in C:\Users\hasegawaryo\Desktop\php\Smarty\postdata\�t�@�C���̃A�b�v���[�h\file2.php on line 40 106int(1) 107array(7) { 108 [1]=> 109 string(62) "php.iniのupload_max_filesizeの制限を越えています。" 110 [2]=> 111 string(51) "HTMLのMAX_FILE_SIZE 制限を越えています。" 112 [3]=> 113 string(69) "ファイルが一部しかアップロードされていません。" 114 [4]=> 115 string(60) "ファイルはアップロードされませんでした。" 116 [6]=> 117 string(48) "一時保存フォルダが存在しません。" 118 [7]=> 119 string(54) "ディスクへの書き込みに失敗しました。" 120 [8]=> 121 string(78) "拡張モジュールによってアップロードが中断されました。" 122} 123array(5) { 124 ["name"]=> 125 array(2) { 126 [0]=> 127 string(36) "bandicam 2016-11-12 18-50-46-457.jpg" 128 [1]=> 129 string(36) "bandicam 2016-11-12 22-25-08-417.jpg" 130 } 131 ["type"]=> 132 array(2) { 133 [0]=> 134 string(10) "image/jpeg" 135 [1]=> 136 string(10) "image/jpeg" 137 } 138 ["tmp_name"]=> 139 array(2) { 140 [0]=> 141 string(50) "C:\Users\hasegawaryo\AppData\Local\Temp\php72A.tmp" 142 [1]=> 143 string(50) "C:\Users\hasegawaryo\AppData\Local\Temp\php72B.tmp" 144 } 145 ["error"]=> 146 array(2) { 147 [0]=> 148 int(0) 149 [1]=> 150 int(0) 151 } 152 ["size"]=> 153 array(2) { 154 [0]=> 155 int(30272) 156 [1]=> 157 int(67484) 158 } 159} 160array(2) { 161 [0]=> 162 int(0) 163 [1]=> 164 int(0) 165} 166int(0) 167 168Notice: Undefined offset: 0 in C:\Users\hasegawaryo\Desktop\php\Smarty\postdata\file\file2.php on line 39 169 170Notice: Undefined offset: 0 in C:\Users\hasegawaryo\Desktop\php\Smarty\postdata\file\file2.php on line 40
回答2件
あなたの回答
tips
プレビュー