[英]Appending random name to 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 ;
将$ file变量设置为所需的随机名称,也可能需要保持文件扩展名不变。 我使用以下代码
$file = md5(uniqid(rand(), true)) . '.' . substr(strrchr(($_FILES['file']['name']), '.'), 1);
移动并保存文件。
$target = $target . $file;
move_uploaded_file($_FILES['file']['tmp_name'], $target);
您可以在上传时重命名文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.