PHPで開発したMySqlデータベースへの簡単なファイルアップロード (3)
このセクションでは、新しいファイルアドレスを生成してデータベースに保存するためのいくつかのカスタム関数を設定します。
まず第一に、アップロードする写真には 123.jpg、abc.png などのアドレスが付いています。
.jpg、.png の接尾辞を後ろに保持する必要があります
2 つの関数を使用して、元のファイルパス
strrchr() 関数は、別の文字列内で最後に出現した文字列を検索し、その位置から文字列の末尾までのすべての文字を返します。
substr() 関数は文字列の一部を返します。
<?php
function fileext($filename)
{
return substr(strrchr($filename, '.'), 1);
}
?>fileext は設定した関数名、filename は元のファイル名です。
ここで、データベースに保存する新しいパス名を生成します
ここで関数ランダムをカスタマイズする必要もあります
プレフィックス CR- を設定し、A-Z、a-z、0-9 Mix からいくつかの文字をランダムに選択し、 match して新しいパス名プレフィックスを生成します
関数を使用します: strlen() この関数は文字列の長さを返します。
<?php
function random($length)
{
$hash = 'CR-';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++)
{
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
?>ターゲットファイル名を生成します
<?php
$filename=explode(".",$_FILES['file']['name']);
do{
$filename[0]=random(10); //设置随机数长度
$name=implode(".",$filename);
$uploadfile = $uploaddir.$name;
}
while(file_exists($uploadfile));
?>explode()関数は文字列を配列に分割します。
implode() 関数は、配列要素で構成される文字列を返します。
最後に、すべてのファイルをPHPファイルupload.phpにパッケージ化します(名前はニーズと機能に応じて作成できます)
<?php
$uploaddir = "upfiles/";//设置文件保存目录 注意包含/
$type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型
//获取文件后缀名函数
function fileext($filename)
{
return substr(strrchr($filename, '.'), 1);
}
//生成随机文件名函数
function random($length)
{
$hash = 'CR-';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++)
{
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
$a = strtolower(fileext($_FILES['file']['name']));
//判断文件类型
if(!in_array(strtolower(fileext($_FILES['file']['name'])),$type))
{
$text=implode(",",$type);
echo "您只能上传以下类型文件: ",$text,"<br>";
}
//生成目标文件的文件名
else{
$filename=explode(".",$_FILES['file']['name']);
do{
$filename[0]=random(10); //设置随机数长度
$name=implode(".",$filename);
$uploadfile = $uploaddir.$name;
}
while(file_exists($uploadfile));
if (move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile))
{
if(is_uploaded_file($_FILES['file']['tmp_name']))
{
echo "上传失败!";
}
else
{//输出图片预览
echo "<tr><td>您的文件已经上传完毕 上传图片预览: <br><img src='$uploadfile'></td></tr>";
echo "<tr><td><a href='tu2.php'style='margin-left: 3%;'>继续上传</a></td></tr>";
} //可以在前端HTML页面显示上传的文件预览
}
}
?>
新しいファイル
<?php
$uploaddir = "upfiles/";//设置文件保存目录 注意包含/
$type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型
//获取文件后缀名函数
function fileext($filename)
{
return substr(strrchr($filename, '.'), 1);
}
//生成随机文件名函数
function random($length)
{
$hash = 'CR-';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++)
{
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
$a = strtolower(fileext($_FILES['file']['name']));
//判断文件类型
if(!in_array(strtolower(fileext($_FILES['file']['name'])),$type))
{
$text=implode(",",$type);
echo "您只能上传以下类型文件: ",$text,"<br>";
}
//生成目标文件的文件名
else{
$filename=explode(".",$_FILES['file']['name']);
do{
$filename[0]=random(10); //设置随机数长度
$name=implode(".",$filename);
$uploadfile = $uploaddir.$name;
}
while(file_exists($uploadfile));
if (move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile))
{
if(is_uploaded_file($_FILES['file']['tmp_name']))
{
echo "上传失败!";
}
else
{//输出图片预览
echo "<tr><td>您的文件已经上传完毕 上传图片预览: <br><img src='$uploadfile'></td></tr>";
echo "<tr><td><a href='tu2.php'style='margin-left: 3%;'>继续上传</a></td></tr>";
} //可以在前端HTML页面显示上传的文件预览
}
}
?>
プレビュー
Clear
- おすすめコース
- コースウェアのダウンロード
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜
このコースを視聴した生徒はこちらも学んでいます
















