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