TOP ▲ itcore TOPTIPStool_upload.php  タグ:tool ソース upload

TOOL upload | itcore 2021年

<?php
//--------------------------------------------------------------
// 20210311 ファイルをアップロードするツール
//--------------------------------------------------------------
list($dt, $dt2, $self, $env, $dirname) = uInit(); // 初期設定
$favicon = "ico/favicon_u1.ico";
//if ("dev2" == $env) $favicon = "ico/favicon_u2.ico";
echo <<<EOT
<html><head>
<title>UPLOADツール</title>
<style type="text/css">
table {border-collapse: collapse;margin:6px; }
th {padding: 6px;border: 1px solid maroon; font-size:medium; background-color:yellowgreen;}
td {padding: 6px;border: 1px solid maroon;}
input[type="text"] {width: 100%;}
textarea {width:100%; resize:vertical; }
</style>
<link rel="icon" href="$favicon">
</head>
<body style="font-family: monospace, monospace; word-break: break-all;">
EOT;

$dir = "$dirname/upload"; // chmod 777 upload
$mode = uForm("mode");
$no = 0;
$html_td = "";
// 関連ツール
$html_tool = "";
//--------------------
// ヘッダ
//--------------------
echo <<<EOT
ファイルアップロードツール <a href=$self>TOP</a> $dt
$html_tool
<hr>
<form name=form1 method=post action=$self enctype="multipart/form-data">
EOT;
//-------------------------------
// ファイルのアップロード
//-------------------------------
if ("" != uForm("sub_upload_file")) {
  $tempfile = $_FILES["file_upload"]["tmp_name"];
  $file1 = "$dir/" . $_FILES["file_upload"]["name"]; // 元のファイル名
  // エラーチェック
  $err = $_FILES["file_upload"]["error"];
  if (1 == $err) {
    echo "ERROR56 ファイルのサイズが制限値を超えています。<br>\n";
  } elseif (0 != $err) {
    echo "ERROR57 err=$err tempfile=$tempfile file1=$file1<br>\n";
    echo "参照 https://www.php.net/manual/ja/features.file-upload.errors.php<br>\n";
  } elseif (!is_uploaded_file($tempfile)) {
    // ファイルが指定されていれば
    echo "ERROR60 アップロードするファイルを選択してください。<br>\n";
  } else {
    // ファイルを保存する。(既にあれば上書き)
    if (move_uploaded_file($tempfile, $file1)) {
      echo "INFO132 ファイルをアップロードしました。$file1<br>\n";
    } else {
      echo "ERROR166 ファイルをアップロードできません。file1=$file1<br>\n";
    }
  }
}

//--------------------
// TOP
//--------------------
if ("" == $mode) {
  $a_fname = uOpendirArrayGet($dir);
  foreach ($a_fname as $fname) {
    $no++;
    $html_td .= "<tr><td align=right>$no<td>";
    $ext = uFileExt($fname);
    if (in_array($ext, array("png", "jpg", "jpeg"))) {
      $html_td .= "<a target=_blank href=upload/$fname>$fname</a><br>\n";
      $html_td .= "<img src=upload/$fname height=100px>";
    } else {
      $html_td .= "$fname";
    }
  }
  echo <<<EOT
■UPLOADファイル一覧 $dir<br>
<br>
ファイルのアップロード
<input type=file name=file_upload>
<input type=submit name=sub_upload_file value=アップロード><br>
<table>
  <tr><th>No<th>ファイル
  $html_td
</table>
EOT;
}
//--------------------
// 共通関数
//--------------------
// 初期設定
function uInit()
{
  error_reporting(E_ALL);
  ini_set("display_errors", 1); // エラーを画面に出す。
  //uSession_start();
  date_default_timezone_set("Asia/Tokyo");
  $dt = date("Y-m-d H:i:s"); // 日時
  $dt2 = date("Ymd_His"); // 日時 20210110_120801
  $self = basename($_SERVER["PHP_SELF"]); // 自分のプログラム名
  $dirname = pathinfo(__FILE__, PATHINFO_DIRNAME);
  $env = "dev1";
  if (false !== strpos($dirname, "-dev2-")) {
    $env = "dev2";
  }
  //echo "debug821 dirname=$dirname env=$env<br>\n";
  return array($dt, $dt2, $self, $env, $dirname);
}
// フォーム変数取得 trim()
function uForm($var, $default = "")
{
  $value = $default;
  if (isset($_POST[$var])) {
    $value = $_POST[$var];
  }
  if (isset($_GET[$var])) {
    $value = $_GET[$var];
  }
  if (!is_array($value)) {
    $value = trim($value);
  } // 配列でなければtrimする。
  return $value;
}
// ディレクトリ配下のファイル名を配列に入れる。.と..は除く。
function uOpendirArrayGet($dir)
{
  $a_fname = array();
  $dh = opendir($dir);
  if (false === $dh) {
    echo "オープン出来ません。dir=$dir<br>\n";
    return $a_fname;
  }
  while (false !== ($fname = readdir($dh))) {
    if ("." == $fname) {
      continue;
    } // 対象外
    if (".." == $fname) {
      continue;
    } // 対象外
    $a_fname[] = $fname;
  }
  closedir($dh);
  sort($a_fname);
  return $a_fname;
}
function uFileExt($file)
{
  $ext = substr($file, strrpos($file, ".") + 1);
  return $ext;
}

//--------------------
// フッタ
//--------------------
?>
</form>
<hr>