文件名

时间:2016-12-06 16:01:15

标签: php upload rename filenames auto-increment

我的用户可以逐个上传个人资料图片,但也可以根据需要随时上传。

假设用户1上传了一张图片,此代码会将其存储到我的uploads文件夹中:

<?php

$fileData = pathinfo(basename($_FILES["fileToUpload"]["name"]));

$fileName = 'user_id_#1#_profilepic_#' . uniqid() . '#.' . $fileData['extension'];

$target_path = "uploads/" . $fileName;

while(file_exists($target_path)) {
    $fileName = 'user_id_#1#_profilepic_#' . uniqid() . '#.' . $fileData['extension'];
    $target_path = ($_SERVER['DOCUMENT_ROOT'] . "uploads/" . $fileName);
}

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_path)) {

    echo "The image was successfully uploaded. <a href='index.php'>Add another image</a>";
}
else {
    echo "There was an error uploading the file, please try again!";
}

?>

这个uniqid()需要被替换,因为以后以正确的顺序查找图像是一场噩梦。

我希望图片 - 上传后 - 看起来像这样:

user_id_#1#_profilepic_#1#.jpg
user_id_#1#_profilepic_#2#.jpg
user_id_#1#_profilepic_#3#.png
user_id_#1#_profilepic_#4#.gif
user_id_#1#_profilepic_#5#.jpg
and so on...

我该怎么做?到目前为止,我还没有任何想法。

1 个答案:

答案 0 :(得分:0)

您可以按目录中的文件编号递增(如果您的用户可以删除他的图片,则不推荐使用):

$total_files = count(glob("./*",GLOB_BRACE)); // count files in directory
echo $total_files;

或者:

使用您录制数字的文本文件。

例如: 您用户上传文件: 获取文本文件中的当前号码 - &gt;添加+1并使用此编号重命名文件 - &gt;在txt文件中记录新号码。

最好的方法应该是数据库记录中的唯一ID,但您可能不使用数据库。

我希望能帮到你。

度过美好的一天!