*PHPでServerにFileをUploadする [#ee15a05b]
RIGHT:更新日&lastmod();
**PHPでのFileのUpaledについて [#ic1517b2]
htmlではデフォルトでFileをアップロードすると/tmpにランダムな名前で一度Uploadされる。そこで、UploadするPHPではそのときのFile名をサーバ変数から取得し、適当なフォルダに名前を変更して移動する。またMIME情報もサーバ変数に入るのでその情報から拡張子を決めることもできるし、local側のファイル名もサーバ変数から取得できる。(ただし、日本語ファイル名については未確認)~
ファイルサイズはHTML側で最大を指定できるがphp.iniのupload_max_filesize (Default 2MB)を越えられない。大きくするときはこの値も大きくする必要があるようだ。
/tmpは一時ファイルなのでPHPが終了すると消える。その他php.iniにはuploadのパラメータがfile_uploads, upload_max_filesize, upload_tmp_dir, post_max_size, max_input_time なんかがあるので注意する
''UploadするForm''~
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=euc-jp">
<META HTTP-EQUIV="Cache-control" CONTENT="no-cache">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<TITLE>Upload TEST</TITLE>
</HEAD>
<BODY>
<FORM ACTION="upload.php" METHOD="POST" ENCTYPE="multipart/form-data">
^^^^^^^^<==これが必要
<INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="1024000"> <==Fileサイズの指定
<INPUT TYPE="file" NAME="img1" SIZE="40">
<P>(Max Size 1MB)
<input type="submit" value="アップロード">
</FORM>
</BODY>
</HTML>
''受けるPHP側''
下のファイルでは../images/abc.(jpg|png|gif)で保存される
<?php
//------------------------------------------------------
$img1 = $_FILES['img1']; // アップロードファイルオブジェクト
$img1tmp = $_FILES['img1']['tmp_name']; // /tmp内のファイル名
$img1name = $_FILES['img1']['name']; // ローカルファイル名
$img1size = $_FILES['img1']['size']; // Fileサイズ
$img1type = $_FILES['img1']['type']; // MIMEタイプ
echo "Local FileName $img1name <=> Server FileName $img1tmp <Br>";
if (is_uploaded_file($img1tmp)){
if ($img1type=="image/gif"){$kaku=".gif";}
if ($img1type=="image_png" || $img1type=="image/x-png"){$kaku=".png";}
if ($img1type=="image/jpeg" || $img1type=="image/pjpeg"){$kaku=".jpg";}
if ($kaku==""){$error="アップロード画像に誤りがあります(送信可能はGIF,JPG,PNGだけです)";}
if ($kaku!=""){
$imgfilename = "abc" .$kaku;
move_uploaded_file($img1tmp, "../images/". $imgfilename);
echo "<P> Upload 成功 <BR>";
}else{
echo "<P> Upload 失敗 <BR>";
}
}else{
echo "<P>Uploadファイルがありません<Br>";
}
?>