在php mysql中上载时重命名文件
我有一段简单的代码,用于在php/mysql中上传文件,效果很好在php mysql中上载时重命名文件,php,mysql,Php,Mysql,我有一段简单的代码,用于在php/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'], $t
$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());
现在,如果文件名已经存在,我想重命名该文件名,然后将重命名后的文件名插入数据库
感谢您的回复运行选择查询检查名称是否存在。如果没有,请插入它。因此,从表中选择all,其中name=文件名。如果numrows>0,则更改名称
实际上,您为什么不直接使用自动增量值作为名称,并将您想要调用的内容存储在单独的列中呢。然后,您将知道每个名称都是不同的,并且不会有太长的URL或文件名。首先,您必须检查该表,该文件名是否已经存在
select * from client where cname="filename";
如果文件名存在,您可以更改文件名。试试这个
$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']);
你可以用很多方法来做 方法1 保存到服务器之前,请选中
文件\u 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;
函数已弃用。不要再使用它们了
尝试使用或。非常感谢。我做了一些小的改变,我得到了结果