2014-11-23 30 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