Php自定义名称到文件

时间:2016-05-11 09:07:45

标签: php

如何为他/我上传的图片制作自定义名称,最好是我希望他们将数字作为名称,下一张图片将获得姓氏+1。

<?php
    $target_dir = "../image/DBFilmCover/";

    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
    $uploadOk = 1;
    imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);

    // Check if image file is a actual image or fake image
    if (isset($_POST["submit"])) {
        $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
        if ($check !== false) {
            echo "File is an image - " . $check["mime"] . ".";
            $uploadOk = 1;
        } else {
            echo "File is not an image.";
            $uploadOk = 0;
        }
    } else {

        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "The file " . basename($_FILES["fileToUpload"]["name"]) . " has been      uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    }
?>

我感谢所有帮助,如果我没有提供足够的信息,请问

4 个答案:

答案 0 :(得分:0)

是的,你可以。只需根据您的需要更改target_file

E.g:

$target_file = $target_dir . "custom name";

要计算目录中的文件数,只需执行以下操作:

$files = scandir($target_dir);
$files_count = count($files)-2; // -2 for ignoring . and ..

现在文件名为:

$path = $_FILES['fileToUpload']['name'];
$ext = pathinfo($path, PATHINFO_EXTENSION);
$files_count++;
$filename = $files_count.".".$ext;
$target_file = $target_dir . $filename;

答案 1 :(得分:0)

您可以使用以下算法

  1. 创建txt文件并在其上保存0
  2. 在上传过程中获取txt文件内容和+1
  3. 保存文件新名称
  4. 并将新值(+1)保存到txt文件以备将来使用。
  5. 您也可以将其保存在数据库中

答案 2 :(得分:0)

因为每次运行脚本时,它都不知道上次运行的时间,你需要存储分配给上一个上传图像的值/编号。

您可以将其存储在文本文件或数据库中,然后在每次运行脚本时将其递增1。

更简单的“黑客”可能是使用类似的数据/时间戳:

$filename = 'image_' . date('Y-m-d_H-i-s');

答案 3 :(得分:0)

要获取新图像的下一个可用编号,您可以使用以下内容:

$last_number = 1;
foreach (glob('../image/DBFilmCover/*.{png,jpg,gif}', GLOB_BRACE) as $name) {
    $number = intval(pathinfo($name, PATHINFO_FILENAME), 10);
    if ($number > $last_number) {
        $last_number = $number;
    }
}
$number++;

$ext = pathinfo($_FILES["fileToUpload"]["tmp_name"], PATHINFO_EXTENSION);
$target_file = "../image/DBFilmCover/$number.$ext";

然后继续使用move_uploaded_file代码。

请注意,PHP 5.2.0中添加了PATHINFO_FILENAME选项。

编辑:还要注意,如果多个用户可能上传文件,此方法(以及记住文本文件或数据库中的最后一个文件名或使用时间戳作为文件名的方法)容易产生同意问题同时。要解决此问题,您可能还想在文件名中添加一些随机字符串。但如果您是上传的单个用户,这不是问题。