PHPでServerにFileをUploadする

更新日2007-11-29 (木) 16:17:08

PHPでのFileのUpaledについて

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>";
}
?>

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-11-29 (木) 16:17:08 (4006d)