TOP ▲
itcore TOP
> TIPS
> tool_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>