我有一个目录路径'/uploads/files'。当用户注册时,我试图将他们的 user_id 附加到路径的末尾以使其成为“uploads/files/user_id”,以便每个用户都有自己的上传文件夹要上传到。我正在使用 Laravel,我当前的代码看起来像这样......
mkdir("uploads/files/" . Auth::user()->id);
这是创建新文件夹的正确方法吗?我一直在用很多不同的方式玩它,但似乎没有任何工作。
mkdir
是要走的路。但是您需要记住,必须正确设置 linux 权限才能使其正常工作。确保你有写作权。您可以使用is_writable($dirPath)
. 将权限设置为755
或您认为最适合您的应用程序的任何内容。
您还可以使用下面的 linux 语法......它对于更复杂的操作很方便。
$path = '/uploads/files/user_id_dir';
shell_exec("mkdir -p $path");
如果您不希望您的目录易于访问和猜测,您可以对您的 user_id 进行哈希处理,然后附加到它。作为一个简单的案例,这很好。但从安全角度来看,这可能是一种威胁。
只需使用md5()
orsha1()
与一个随机的复杂字符串一起作为 asalt
来保证您的目录安全并且远离被猜到。
另一件事是将其放在 if 条件中以检查文件夹是否已创建。
$path = 'path_to_your_directory';
if(!file_exists($path)
{
//then create the directory
}
else
{
//do the upload here
}
编辑:如果您正在使用Auth::user()->id
,用户必须登录到该站点。即会话必须存在。否则它不会工作。猜你知道。