PHP로 개발된 MySql 데이터베이스에 간단한 파일 업로드(3)
이 섹션에서는 새 파일 주소를 생성하고 데이터베이스에 저장하기 위한 여러 사용자 정의 기능을 설정합니다.
우선, 우리가 업로드하는 사진에는 123.jpg, abc.png 등과 같은 주소가 있습니다.
뒤에 .jpg, .png 접미사를 유지해야 합니다.
두 가지 기능을 사용하여 다음의 접미사를 가로채세요. 원본 파일 경로
strrchr() 함수는 다른 문자열 내에서 마지막으로 나타나는 문자열을 찾아 해당 위치부터 문자열 끝까지의 모든 문자를 반환합니다.
substr() 함수는 문자열의 일부를 반환합니다.
<?php
function fileext($filename)
{
return substr(strrchr($filename, '.'), 1);
}
?>fileext는 우리가 설정한 함수 이름이고, filename은 원본 파일 이름입니다.
이제 데이터베이스에 저장할 새 경로 이름을 생성하겠습니다
여기서 무작위 기능도 사용자 정의해야 합니다
접두사 CR-를 설정하고 A-Z, a-z, 0-9에서 몇 글자를 무작위로 선택하고 일치하여 새 경로 이름 접두어를 생성합니다
함수 사용: 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页面显示上传的文件预览
}
}
?>
