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

时间:2015-08-30 16:47:14

标签: php html mysql mkdir

// 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 个答案:

答案 0 :(得分:1)

我刚测试了以下内容:

$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值。

编辑:我们不能这样做,我们再来一次:

$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没问题