トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

PHP/サンプル/File Uploader の変更点

Top / PHP / サンプル / File Uploader

[[PHP/サンプル]]

*はじめに
フォームで送信されたファイルはテンポラリファイルとしてアップロードされます。~
このテンポラリファイルは処理終了後に削除されますので、保存する場合は書き込み権限の有るディレクトリにコピーします。~
このときアップロードの元ファイル名は取得できるので元ファイル名でコピーできます。~



*サンプル
書き込み可能なuploadディレクトリを用意し、次のファイルを設置します。~

uploader.html
 <html>
 <head><title>File Uploader</title></head>
 
 <body>
 <h1>File Uploader</h1>
 
 <form method="post" enctype="multipart/form-data" action="uploader.php">
   <input type="file" name="upfile">
   <input type="submit" value="upload">
 </form>
 
 </body>
 </html>

uploader.php
 <html>
 <head><title>File Uploader</title></head>
 
 <body>
 <h1>File Uploader</h1>
 
 <?php
     define("UPLOAD_DIRECTORY", "./upload/");
 
     $fname = $_FILES['upfile']['name'];
     if (move_uploaded_file($_FILES['upfile']['tmp_name'], UPLOAD_DIRECTORY . $fname)) {
         chmod(UPLOAD_DIRECTORY . $fname, 0644);
         print("<b>" . $fname . "</b> uploaded!");
     } else {
         print("<b>" . $fname . "</b> upload failed ...<br />" . $_FILES['upfile']['error']);
     }
 ?>
 
 </body>
 </html>



*関連情報
php.iniのファイルアップロード関連項目
|file_uploads|ファイルアップロード可否|
|upload_tmp_dir|アップロード用テンポラリディレクトリ(指定しないときはシステムデフォルトとなります)|
|upload_max_filesize|アップロードファイルの最大サイズ|

下記サンプルの'upfile'というnameで送信した場合のファイルメタ情報
|$_FILES['upfile']['name']|実際のファイル名|
|$_FILES['upfile']['tmp_name']|テンポラリファイルとしてアップされているときのファイル名|
|$_FILES['upfile']['type']|'image/jpeg'といったMIMEタイプ|
|$_FILES['upfile']['size']|ファイルバイト数|
|$_FILES['upfile']['error']|エラーコード数値 UPLOAD_ERR_OK(= 0)など|

エラーコード数値
|定数|値|概要|
|UPLOAD_ERR_OK|0|アップロード成功|
|UPLOAD_ERR_INI_SIZE|1|アップロードファイルの容量がphp.iniのupload_max_filesize値を超えている|
|UPLOAD_ERR_FORM_SIZE|2|アップロードファイルの容量がHTMLファイルで指定したmax_file_size値を超えている<input type="hiddden" name="max_file_size" value="1000000">|
|UPLOAD_ERR_PARTIAL|3|アップロードファイルの一部しかアップロードされていない|
|UPLOAD_ERR_NO_FILE|4|アップロード失敗|


*リンク
-[[複数ファイルアップロード方法>http://www.php.net/manual/ja/features.file-upload.php]]
-[[画像ファイルサイズを変更して、アップロードする方法>http://winofsql.jp/php/material/fileupload.htm]]