2014-11-23 64 views
0

我有一段简单的上传php/mysql文件的代码,效果很好。在php上传时重命名文件mysql mysql

$target = "uploads/clients/"; 
    $target = $target . basename($_FILES['photo']['name']); 

    $pic=($_FILES['photo']['name']); 

    //Writes the photo to the server 
    if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
    { 
    $insertSQL = sprintf("INSERT INTO clients (img, `cname`) VALUES (%s, %s)", 
         GetSQLValueString($pic, "text"), 
         GetSQLValueString($_POST['cname'], "text")); 

    mysql_select_db($database_thebest, $thebest); 
    $Result1 = mysql_query($insertSQL, $thebest) or die(mysql_error()); 

现在我想的是,如果该文件名已经存在重命名的文件名,然后将改名为文件名添加到数据库

感谢您的回复

回答

0

尝试......

$upload_dir = "uploads/clients/"; 
$target = $upload_dir . basename($_FILES['photo']['name']); 
while(file_exists($target)){ 
    $new = time().rand(); 
    $target = $upload_dir . '_' . $new . '_' . basename($_FILES['photo']['name']); 
} 

// rest of the code now... 
$pic= $new . ($_FILES['photo']['name']); 
+0

非常感谢。我做了一些小的改变,我得到了结果 – Tariq 2014-11-23 11:32:05

+0

很高兴它的工作..欢迎:) – Riad 2014-11-23 11:32:56

0

运行SELECT查询检查,看看名字是否存在。如果没有,插入它。所以,从你的表中选择名字=你的文件名。如果numrows> 0,则更改名称。

实际上,为什么不使用自动增量值作为名称并将其存储在任何要在独立列中调用的值。然后你就会知道每个名字都会有所不同,你不会有疯长的网址或文件名。

0

首先你必须检查表,该文件名已经存在与否。

select * from client where cname="filename"; 

如果文件名存在,您可以更改文件名。

1

您可以通过多种方式来进行。

方法1

检查file_exists()之前保存到服务器:

if (file_exists("../img/imageDirectory/" . $_FILES["file"]["name"])) 
{ 
    echo $_FILES["file"]["name"] . " already exists. "; 
} 
else 
{ 
    move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $_FILES["file"]["name"]); 
    // Others insert statements here... 
} 

方法2

使用microtime()生成每个文件的唯一名称:

$temp = explode(".",$_FILES["file"]["name"]); 
$newfilename = substr(microtime(), 2, 7) . '.' .end($temp); 
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename; 

mysql_*函数已弃用。不要再使用它们了。

尝试使用PDOmysqli