上传文件重名php (你怎么处理php文件上传时的重名情况?)

在进行PHP文件上传时,经常会出现文件名重复的情况。如果不加以处理,这可能会导致数据覆盖和丢失。下面我们来探讨一下如何处理PHP文件上传时的重名情况。

1. 重命名文件名

有一种简单的处理方法就是在上传文件时重命名文件名。PHP中提供了rename()函数来实现重命名。

php
$temp_name = $_FILES['file']['tmp_name'];
$origin_name = $_FILES['file']['name'];
$extension_name = end(explode(".", $origin_name));
$new_name = md5(rand(1,999)).'.'.$extension_name;
move_uploaded_file($temp_name,$new_name);

以上代码首先获取上传文件的临时文件名和原文件名,然后随机生成一个新的文件名,并将临时文件移动到新的文件名处。

2. 判断文件是否存在

另一种处理方式是通过判断文件是否存在来避免文件名重复。使用file_exists()函数可以判断文件是否存在,如果存在,则在文件名后面添加一个数字或时间戳等辅助信息防止重复。

php
$origin_name = $_FILES['file']['name'];
$path = 'uploads/'.$origin_name;
if(file_exists($path)){
$extension_name = end(explode(".", $origin_name));
$new_name = md5(rand(1,999)).$time().'.'.$extension_name;
$path = 'uploads/'.$new_name;
}
move_uploaded_file($_FILES['file']['tmp_name'],$path);

以上代码首先获取上传文件的原文件名和上传路径,然后判断文件是否存在。如果存在,则在文件名后添加时间戳等辅助信息,否则直接使用原文件名上传。

3. 数据库存储文件名

最后一种处理方法是将文件名存储在数据库中,通过查询数据库来判断文件是否存在。这种方法相对于上面两种方法比较安全,但需要使用数据库操作。

php
$origin_name = $_FILES['file']['name'];
$path = 'uploads/'.$origin_name;
$sql = "SELECT count(*) FROM table_name WHERE filename='".$origin_name."'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if($row[0]>0){
$extension_name = end(explode(".", $origin_name));
$new_name = md5(rand(1,999)).$time().'.'.$extension_name;
$path = 'uploads/'.$new_name;
$sql = "INSERT INTO table_name(filename) VALUES('".$new_name."')";
mysql_query($sql);
}else{
$sql = "INSERT INTO table_name(filename) VALUES('".$origin_name."')";
mysql_query($sql);
}
move_uploaded_file($_FILES['file']['tmp_name'],$path);

以上代码首先获取上传文件的原文件名和上传路径,然后查询数据库来判断文件是否存在。如果存在,则在文件名后添加时间戳等辅助信息并将新文件名存储在数据库中,否则直接使用原文件名上传并将原文件名存储在数据库中。

以上三种处理方法可以根据实际需求进行选择和组合,以达到最佳的处理效果。

如有侵犯您的权益请邮件发送:rainpro@foxmail.com,站长看到会第一时间处理
客栈猫 » 上传文件重名php (你怎么处理php文件上传时的重名情况?)

提供最优质的资源集合

立即查看 了解详情