我想创建一个函数,该函数将创建一个目录来将照片存储在文件系统中。假设在根目录中有一个名为“相册”的目录。页面上有一个表单,允许用户创建一个新专辑,该专辑将在“专辑”下创建一个子目录。
我也想拥有嵌套相册的功能。创建新相册时,管理员可以为相册名称提供正斜杠(/
)分隔符以递归创建此文件夹结构。
我使用目录是因为我希望能够通过直接FTP访问服务器以处理大量相册来管理相册。每个照片目录可以具有一个可选album.properties
文件,以具有与相册本身关联的任何元数据(例如,用于相册的缩略图)。
if (!is_admin()) die();
$album_name = $_GET['album_name'];
if ($album_name) {
$directory = "/albums/" . $album_name;
// TODO: How can I validate $album_name?
if (file_exists($directory)) {
echo "Album already exists, please choose a different name.";
} else if (mkdir($album_name), 0777, true) { // Recursive is true
echo "Album successfully created.";
} else {
// TODO: Is there a way to output a more detailed explanation?
echo "The album could not be created.";
}
}
请参阅TODO
PHP代码中的标记。另外,如果您到目前为止对我的方法有任何建议,那将很有用。
请注意,直到最近我才决定使用目录和属性文件,而不是数据库表来存储与相册/照片关联的元数据,因为我最近才发现客户端希望使用FTP。
不过,我仍然需要数据库表,以允许管理员将权限分配给已经存在的相册。例如,管理员可以与公众或其他非管理员用户共享特定的相册。该/albums
目录将无法直接访问,而是另一个目录.php
将允许下载照片或读取元数据,但仅允许获得许可的用户使用。
编辑:
在我想要的内容上添加更多说明:
为了验证s$album_name
是一个有效的目录名,如果它是无效的,我想输出一条错误消息。我也想向用户解释如何选择一个有效的目录名称。
如果mkdir失败,我想输出更详细的消息,以告诉用户他/她可以采取什么措施来纠正问题。
您可以使用正则表达式,也可以只检查mkdir是否成功。
请参阅有关此问题的答案以供参考:检查字符串以获取有效的目录名称
编辑1:
要检查mkdir函数是否会成功,您可以先使用is_writable之类的php函数来检查您是否有权在该位置进行写操作。如果没有,您可以让您的用户知道(但如果是这种情况,您可能应该考虑为什么他们试图在没有权限的地方写东西)。否则,如果mk_dir函数失败,您将能够记录失败并稍后检查问题。除此之外,您可能不应该先调查问题就不告诉用户太多信息
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句