0

我被困在这一步:

我有一个上传功能,可以将文件保存在upload文件夹下的文件夹下media。这些文件将保存在同时由上传文件的用户名创建的文件夹中。那些带有文件的文件夹将在文件夹下的文件夹upload下创建media

def custom_path(instance, filename):
return '/'.join(['upload',instance.student.user.username,filename])

class Doc(models.Model):
    uploadtime = models.DateTimeField(auto_now_add=True, blank=True)
    datei = models.FileField(upload_to=custom_path,default='')

现在我想做的是:

1) 搜索特定文件夹名称 2) 如果找到,请查看 - 如果未找到,请创建一个。

如何获取给定文件夹下的所有文件夹名称?或者我怎样才能遍历文件夹并获得他们的名字?

如果我这样做:os.path.abspath(os.path.join(os.path.dirname( __file__ ), os.pardir, 'media/upload'))我正在获取upload文件夹的路径。我有点困惑,不知道如何在此路径下搜索文件夹名称

任何声明将不胜感激

4

2 回答 2

2
def custom_path(instance, filename):
    path = os.path.join('upload', 'media', slugify(instance.student.user.username))
    try:
        os.path.mkdir(path)
    except OSError:
        # path already exists
        pass

slugify如果用户名包含一些不允许作为文件名的特殊字符,请在此处使用。

os.path.mkdirOSError如果目录已经存在,将引发。

最后,os.path.join要正确创建路径并且您不需要文件名组件,因为您要返回目录路径。

于 2013-08-30T18:53:45.753 回答
1

您可能要记住的一件事是,在media/upload下拥有大量子目录最终会使对该目录的访问变得非常非常慢。根据我的经验,访问时间开始恶化,一个目录下有大约 1000 个目录/文件。

如果您预计会出现这种情况,您可能需要修改设计以将用户的文件存储在数据库中。

于 2013-08-30T23:30:38.247 回答