我一直试图在上传时重命名我的图像,我找到的唯一一段代码是使用32char哈希的代码。
function make_filename_hash($filename) {
$info = pathinfo($filename);
$ext = empty($info[\'extension\']) ? \'\' : \'.\' . $info[\'extension\'];
$name = basename($filename, $ext);
return md5($name) . $ext;
}
add_filter(\'sanitize_file_name\', \'make_filename_hash\', 10);
我的php知识非常有限,我到处寻找一个使用生成的随机数而不是哈希的示例,但没有成功。我最初的想法是获取db图像id并在上传时将其用作图像文件名,但在这个过程中我的大脑被扭曲了。
无论如何,在这一点上,我会满足于某种编号系统,它会在每次上传时增加一个数字,或者如果不可能,至少会使用一些随机数,比如rand(100009999)。
非常感谢您的帮助,非常感谢
==========================================================
您可以从函数中的自定义表中读取数据吗。php并写入。我试图从表中读取计数器,将图像设置为该计数器编号,并更新数据库中的计数器。它似乎不起作用,计数器会增加,但表永远不会更新,而且无论db中的值是什么,计数器都不会使用该值,因此这意味着它也不会读取该值。我只是想知道是否有其他方法可以重命名文件,但要使用自定义表中的值。这就是我目前得到的。我在想也许我用错了钩子,但现在我有点卡住了。谢谢各位。
function make_filename_counter($filename) {
$qry;
$fcnt = 0;
$sql = ("SELECT counter FROM bwbps_filenamecounter WHERE id = 1");
$cnt = mysql_query($sql);
foreach($cnt as $cnt) {
$fcnt = $cnt->counter;
}
$fcnt = $fcnt + 1;
$info = pathinfo($filename);
$ext = empty($info[\'extension\']) ? \'\' : \'.\' . $info[\'extension\'];
$sql = "UPDATE bwbps_filenamecounter SET counter = " . $fcnt . " WHERE id = 1";
$qry = mysql_query($sql);
$fcnt = 0;
return $fcnt . $ext;
}
add_filter(\'sanitize_file_name\', \'make_filename_counter\', 10);