やっぱりパソコンはむずかしいんだよ!
t-eyes.com
 

 


 

 

 

 

PHPなとこ>>SAMPLE>>ファイルアップロード

■フォームを使ったファイルのアップロード方法

フォームからのテキストデータはスーパーグローバル変数の $_POSTまたは $_GETで取得する事ができましたが、ファイルはこれでは扱えません。

ファイルを受け取るには $_FILES 変数を利用します。$_POSTと同じように$_FILESもスーパーグローバル変数(PHPプログラムの何処からでもアクセス可能)です。$_FILESは多次元配列になっており、様々な値を得ることができます。

neme = フォームのファイル選択フィールドのnameプロパティ

$_FILES[neme]['name'] =送信したクライアントマシン上のファイル名
$_FILES[neme]['size'] =送信したファイルのバイト単位のサイズ
$_FILES[neme]['type']=ファイルMIME型。
$_FILES[neme]['tmp_name']=アップロードされたファイルがサーバー上で一時保存されているテンポラ リファイルの名前
$_FILES[neme]['error']=PHP4.2.0で追加されたエラーコード。
UPLOAD_ERR_OK
値: 0; エラーはなく、ファイルアップロードは成功しています。
UPLOAD_ERR_INI_SIZE
値: 1; アップロードされたファイルは、php.ini の upload_max_filesize ディレクティブの値を超えています。
UPLOAD_ERR_FORM_SIZE
値: 2; アップロードされたファイルは、HTMLフォームで指定された MAX_FILE_SIZE を超えています。
UPLOAD_ERR_PARTIAL
値: 3; アップロードされたファイルは一部のみしかアップロードされていません。
UPLOAD_ERR_NO_FILE
値: 4; ファイルはアップロードされませんでした。
UPLOAD_ERR_NO_TMP_DIR
値: 6; テンポラリフォルダがありません。PHP 4.3.10 と PHP 5.0.3 で導入されました。
注意: これらはPHP 4.3.0でPHP定数となりました。

下のsample upload.php では、ファイルをアップロードした場合に得られる情報を表示します。
ファイルアップロードという性質上、サンプルはご自分のサーバでお試しください。
サンプル upload.php (lzh圧縮)

upload.php ソース

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html><head><meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
< title>sample:アップロードテスト</title></head>
sample:アップロードテスト
< p>

<?PHP
if ($_FILES['file1']){
if (!$_FILES['file1']['error']){

/* 一時保存ディレクトリから任意の場所にファイルを移動する場合は、
$uploaddir にディレクトリのパスを入れ、下の2行のコメント記号を外してください。
※アップロード先のディレクトリのパーミッション設定を適切に(777等)にすることを忘れないように。
*/

//$uploaddir='ここに保存先のディレクトリパス';
//if (move_uploaded_file($_FILES['file1']['tmp_name'], $uploaddir.$_FILES['file1']['name'])){$result='アップロード完了';}else{$result='アップロード失敗';}

$name=$_FILES['file1']['name'];
$size=$_FILES['file1']['size'];
$type=$_FILES['file1']['type'];
$tmpname=$_FILES['file1']['tmp_name'];
$error=$_FILES['file1']['error'];

if (!$result){$result='一時保存ディレクトリにアップロードされました。';}
print <<<EOM
------------------------送信内容-----------------------------------<P>
name=$name <P>
size=$size バイト<P>
type= $type <P>
tmp_name= $tmpname <P>
error=$error <P>
$result<P>
-------------------------------------------------------------------
EOM;
}else{print 'ファイルアップロード時にエラーが発生しました。<P>';}
}

?>

<form action="sample402.php" method="POST" enctype="multipart/form-data" name="form1">
< table width="300" border="0" cellpadding="4" cellspacing="0" bgcolor="#CCCCFF">
< tr><td>
< input type="file" name="file1">
< br>
< br><input type="submit" name="Submit" value="送信">
< /td>
< /tr></table></form>
< /body></html>


※ごちゃごちゃ長いように見えますが、HTML部分と完了表示を除くと残りはわずかです。


■ファイル送信フォーム作成の注意

ファイル送信のために使用するフォームは enctype="multipart/form-data" の属性を与えてやらなければなりません。無い場合はファイルアップロードは動作しませんのでお気をつけ下さい。

■アップロードしたファイルのパーミッションを確認

アップロードを完了し、任意のディレクトリに保存できたファイルのパーミッションを確認しておきましょう。
PHPからの操作できるが、ブラウザからの閲覧はできないとなっては、元も子もないですので。




※使用に関して発生した問題の責任は、一切負いませんのでご了承ください。
バグや不具合等に関しては、ご報告頂ければ善処します。

 


【TOP】


© 2005 t-eyes.com