[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[ノート/ノート]]~
訪問者数 &counter(); 最終更新 &lastmod();
**PHPで複数ファイルを同時にアップロードする [#idf7308d]
-ファイルアップロードの時に、1回の選択で複数ファイルを選択してアップロードする機能が、HTML5にて規格化された。
-HTML5対応のブラウザFireFoxなどでは、使うことができる。
-サーバー側はCGIインターフェースが対応していればよいが、たとえばapache+PHPなどが対応。 Pythonでも使える ⇒ [[PythonをCGIプログラムとして使う>ノート/PythonをCGIプログラムとして使う]]
-[[PHPのマニュアルページ:http://php.net/manual/ja/feature-fileupload.multiple.php]]
-従来の、単一ファイルしかアップロードできない時に、複数ファイルをアップロードするには、こうしなければならなかった。
<form action="file-upload.php" method="post" enctype="multipart/form-data">
Send these files:<br />
<input name="userfile[]" type="file" /><br />
<input name="userfile[]" type="file" /><br />
<input type="submit" value="Send files" />
</form>
上記のフォームで投稿された場合、配列 $_FILES['userfile'], つまり、
$_FILES['userfile']['name'][i], $_FILES['userfile']['size'][i], $_FILES['userfile']['tmp_name'][i],
$_FILES['userfile']['type'][i]
が設定されます。
例えば、ファイル名が /home/test/review.html および /home/test/xwp.out のファイルが 投稿されると、
$_FILES['userfile']['name'][0] の値が review.html となり、$_FILES['userfile']['name'][1] の値が
xwp.out となります。
尚、max_file_uploads は一回のリクエストあたりでアップロードできるファイルの数の制限値となります。
-HTML5では、ファイル複数同時アップロードができる規格が導入された
--解説記事~
[[HTML5でファイル複数同時アップロード:http://suin.asia/2011/01/23/html5_input_multiple]]
<form action="file-upload.php" method="post" enctype="multipart/form-data">
Send these files:<br />
<input name="userfile[]" type="file" multiple/><br />
<input type="submit" value="Send files" />
</form>
--上記<input type="file">のところに、multiple と指定するだけ。これで、選択画面で複数ファイルを同時選択(WindowsならばCTRLキーを押しながら左クリック)できる。
-これを使った、もう少し実際的な(動いた)プログラムの例:
multifile.html (formを書いている側)
<html>
<body>
<form action="multifile.php" method="post" enctype="multipart/form-data">
Send these files:<br />
<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
<input name="userfile[]" type="file" multiple/><br /> <--- ここにmultiple指定
<input type="submit" value="Send files" />
</form>
</body>
</html>
multifile.php (formのactionで起動される側)
<?php
$count = count($_FILES['userfile']['name']);
print($count . '<br>');
for ($i=0; $i<$count; $i++) {
print($_FILES['userfile']['name'][$i] . '<br>');
print($_FILES['userfile']['tmp_name'][$i] . '<br>');
if (is_uploaded_file($_FILES["userfile"]["tmp_name"][$i])) {
if (move_uploaded_file($_FILES["userfile"]["tmp_name"][$i], "files/" . $_FILES["userfile"]["name"][$i])) {
chmod("files/" . $_FILES["userfile"]["name"][$i], 0644);
echo $_FILES["userfile"]["name"][$i] . "をアップロードしました。<br>";
} else {
echo "ファイルをアップロードできません。<br>";
}
} else {
echo "ファイルが選択されていません。<br>";
}
}
?>
終了行:
[[ノート/ノート]]~
訪問者数 &counter(); 最終更新 &lastmod();
**PHPで複数ファイルを同時にアップロードする [#idf7308d]
-ファイルアップロードの時に、1回の選択で複数ファイルを選択してアップロードする機能が、HTML5にて規格化された。
-HTML5対応のブラウザFireFoxなどでは、使うことができる。
-サーバー側はCGIインターフェースが対応していればよいが、たとえばapache+PHPなどが対応。 Pythonでも使える ⇒ [[PythonをCGIプログラムとして使う>ノート/PythonをCGIプログラムとして使う]]
-[[PHPのマニュアルページ:http://php.net/manual/ja/feature-fileupload.multiple.php]]
-従来の、単一ファイルしかアップロードできない時に、複数ファイルをアップロードするには、こうしなければならなかった。
<form action="file-upload.php" method="post" enctype="multipart/form-data">
Send these files:<br />
<input name="userfile[]" type="file" /><br />
<input name="userfile[]" type="file" /><br />
<input type="submit" value="Send files" />
</form>
上記のフォームで投稿された場合、配列 $_FILES['userfile'], つまり、
$_FILES['userfile']['name'][i], $_FILES['userfile']['size'][i], $_FILES['userfile']['tmp_name'][i],
$_FILES['userfile']['type'][i]
が設定されます。
例えば、ファイル名が /home/test/review.html および /home/test/xwp.out のファイルが 投稿されると、
$_FILES['userfile']['name'][0] の値が review.html となり、$_FILES['userfile']['name'][1] の値が
xwp.out となります。
尚、max_file_uploads は一回のリクエストあたりでアップロードできるファイルの数の制限値となります。
-HTML5では、ファイル複数同時アップロードができる規格が導入された
--解説記事~
[[HTML5でファイル複数同時アップロード:http://suin.asia/2011/01/23/html5_input_multiple]]
<form action="file-upload.php" method="post" enctype="multipart/form-data">
Send these files:<br />
<input name="userfile[]" type="file" multiple/><br />
<input type="submit" value="Send files" />
</form>
--上記<input type="file">のところに、multiple と指定するだけ。これで、選択画面で複数ファイルを同時選択(WindowsならばCTRLキーを押しながら左クリック)できる。
-これを使った、もう少し実際的な(動いた)プログラムの例:
multifile.html (formを書いている側)
<html>
<body>
<form action="multifile.php" method="post" enctype="multipart/form-data">
Send these files:<br />
<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
<input name="userfile[]" type="file" multiple/><br /> <--- ここにmultiple指定
<input type="submit" value="Send files" />
</form>
</body>
</html>
multifile.php (formのactionで起動される側)
<?php
$count = count($_FILES['userfile']['name']);
print($count . '<br>');
for ($i=0; $i<$count; $i++) {
print($_FILES['userfile']['name'][$i] . '<br>');
print($_FILES['userfile']['tmp_name'][$i] . '<br>');
if (is_uploaded_file($_FILES["userfile"]["tmp_name"][$i])) {
if (move_uploaded_file($_FILES["userfile"]["tmp_name"][$i], "files/" . $_FILES["userfile"]["name"][$i])) {
chmod("files/" . $_FILES["userfile"]["name"][$i], 0644);
echo $_FILES["userfile"]["name"][$i] . "をアップロードしました。<br>";
} else {
echo "ファイルをアップロードできません。<br>";
}
} else {
echo "ファイルが選択されていません。<br>";
}
}
?>
ページ名: