代码之家  ›  专栏  ›  技术社区  ›  Abbas Ogaji

mkdir()无法使用此代码为上传照片创建随机目录名

  •  0
  • Abbas Ogaji  · 技术社区  · 10 年前
    // profile picture upload
    if (isset($_FILES['profilepic'])) {
        if ( ((@$_FILES["profilepic"]["type"]=="image/jpeg")
                || (@$_FILES["profilepic"]["type"]=="image/png")
                || (@$_FILES["profilepic"]["type"]=="image/gif"))
            && (@$_FILES["profilepic"]["size"] < 1048576) ) //1 Megabyte
        {
            $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
            $rand_dir_name = substr(str_shuffle($chars), 0, 15);
    
            mkdir("userdata/profile_pics/$rand_dir_name");
    

    这是我所有文件所在的目录: C:/xampp/htdocs/asweb

    这是我想要保存新目录的地方: C:/xampp/htdocs/asweb/userdata/profile_pics

    1 回复  |  直到 10 年前
        1
  •  1
  •   Drew    10 年前

    我刚刚测试了以下内容:

    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $rand_dir_name = substr(str_shuffle($chars), 0, 15);
    echo $rand_dir_name.$b;    // ojTxNHb0RuiyKze
    
    mkdir("c:\\dev\\".$rand_dir_name,0777,TRUE);
    

    它制造了 c:\dev\ojTxNHb0RuiyKze 没问题。我进去保存了一个文本文件。

    手册 page

    模式

    默认模式为0777,这意味着最宽 通道有关模式的更多信息,请阅读chmod()上的详细信息 页

    注:模式为 忽略 在Windows上。请注意,您可能希望 将模式指定为八进制数,这意味着它应该具有 前导零。该模式也由当前umask修改 可以使用umask()进行更改。

    但是在linux上,让它遵循chmod值。

    编辑:op无法执行,我们再次开始:

    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $rand_dir_name = substr(str_shuffle($chars), 0, 15);
    echo $rand_dir_name.$b;    // l1TGXW3kgQcr2N5
    mkdir("C:\\xampp\\htdocs\\asweb\\userdata\\profile_pics\\".$rand_dir_name,0777,TRUE);   
    

    …制造的 C:\xampp\htdocs\asweb\userdata\profile_pics\l1TGXW3kgQcr2N5 没问题

    推荐文章