php - 将随机名称附加到文件上传

标签 php mysql file upload

我将文件和用户数据一起保存到数据库的表中。现在,一切工作正常,除了我找不到一种有效的方法来将随机名称附加到上传的文件名。其中文件被重命名以供查看和数据库上。这是我目前正在做的事情。

<?php 

 $target = "files/"; 
 $target = $target . basename( $_FILES['file']['name']); 

 $title=$_POST['title'];
 $description=$_POST['description'];
 $username=$_POST['username'];
 $image=$_POST['image'];
 $timestamp=$_POST['timestamp'];
 $file=($_FILES['file']['name']);
 $from=$_POST['from'];
 $button_id=$_POST['button_id'];

 mysql_connect("", "", "") or die(mysql_error()) ; 
 mysql_select_db("") or die(mysql_error()) ; 

  mysql_query("INSERT INTO `client_files` VALUES ('$title', '$description','$username', '$image', '$timestamp', '$file', '$from', '$button_id')") ;

 if(move_uploaded_file($_FILES['file']['tmp_name'], $target)) 
 { 

echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
 } 
 else { 
  echo "Sorry, there was a problem uploading your file."; 
 } 
 ?> 

向上传的文件附加随机名称的最佳方法是什么?

更新:

我尝试了以下方法,我认为这将是解决方案......

 $file = md5(uniqid(rand(), true)) . '.' . substr(strrchr(($_FILES['file']['name']), '.'), 1);

我能够将文件名重命名为数据库上的随机字符串,但一旦传递到文件夹就无法更新它。我在想,如果我先将它传递给目标,它会更改服务器上的数据库和文件。虽然我尝试了以下方法,

$target = "files/"; $target = tempnam($target, "");

但是文件已损坏并且无法读取..

最佳答案

您可以将唯一的随机数附加到现有名称。 尝试下面的代码

$target = "files/"; 
$random = rand(0,9999);
$filename = basename( $_FILES['file']['name']);

$target = $target.$random.$filename ; 

关于php - 将随机名称附加到文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24750900/

相关文章:

php 和 mysql 查询问题 - 查询不工作

php - 如何使用php安装数据库?

javascript - 在不知道文件名的情况下获取文件扩展名

php - 如何选择特定用户?

PHP header() 重定向后 JavaScript 未加载

javascript - AJAX 下载后直接上传文件(不存储)

mysql - SQL JOIN COUNT 然后在 where 子句中使用该计数值

linux - 为什么在多个终端上同时运行同一个Python脚本时没有错误?

emacs - 如何使用 Emacs 更改文件的读/写模式?

PHP:对象的array_filter?