【问题标题】:Create Random Folders - PHP创建随机文件夹 - PHP
【发布时间】:2020-10-26 11:58:56
【问题描述】:

我开发了一个 API 集成,它包含多个图像/文件上传。如果多个用户上传具有相同名称的文件,则存在名称冲突。

我已计划创建具有随机名称的动态文件夹来解决此问题(作为临时文件夹 & 将在该过程完成后删除)。是否有任何方法/技术可用于在 PHP 中生成随机文件夹?

【问题讨论】:

  • 我认为该文件夹与您的系统崩溃没有任何关系,主要问题可能与您的上传 API 实现有关
  • 既然你要求“随机”,我也将分享一个我写的从another post创建随机目录的函数。

标签: php


【解决方案1】:

对于这样的事情,我发现 php 函数 uniqid 很有用。 基本上是这样的:

$dirname = uniqid();
mkdir($dirname);

然后只需将上传的文件移动到该目录即可。

编辑:忘了说,目录名不是随机的,但保证是唯一的,这似乎是你需要的。

【讨论】:

  • 感谢工作完美:) 没有太多要弥补的...谢谢:)
  • 我知道这是旧的,但对于任何人来说。 uniqid() 不保证是唯一的,但很可能是。 stackoverflow.com/a/4070142/1178671
【解决方案2】:

是的,可以使用mkdir()Example

<?php
mkdir("/path/to/my/dir", 0700);
?>

更多请查看

http://php.net/manual/en/function.mkdir.php

【讨论】:

    【解决方案3】:

    我想最好有一个函数尝试创建随机文件夹(并验证是否成功)直到成功。

    这个没有竞争条件,也不依赖于相信 uniqid() 提供的名称尚未在 tempdir 中用作名称。

    function tempdir() {
        $name = uniqid();
        $dir = sys_get_temp_dir() . '/' . $name;
        if(!file_exists($dir)) {
            if(mkdir($dir) === true) {
                return $dir;
            }
        }
        return tempdir();
    }
    

    【讨论】:

      猜你喜欢
      • 2017-05-08
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 2016-09-22
      • 2012-05-02
      • 2018-03-28
      • 2014-02-18
      相关资源
      最近更新 更多