在Django上传中创建带有正确权限的文件夹
在上传文件的时候,我把 upload_to
设置成一个函数,这个函数会创建一个不存在的路径,但Django却会自动创建一些额外的文件夹,而这些文件夹的权限我不太喜欢。
举个例子,
def photo_upload_path(instance, filename):
return os.path.join('photos', str(instance.id), filename)
不过,这些文件夹的权限并不是我想要的。我是不是应该自己先创建文件夹,然后设置权限呢?还是说有什么设置可以调整这个?
我找到了一篇关于控制上传文件权限的帖子(django / file uploads permissions),但没有找到关于创建目录的相关内容。
谢谢大家的帮助!
2 个回答
0
所以我最后找到了解决权限问题的方法。
我当时使用的是apache,所以我觉得这其实并不完全是django的问题。
如果我编辑一下 /etc/apache2/envvars
文件,并添加一行,比如 umask u=rwx,g=rwx,o=rwx
,这样就可以设置默认的权限了。
4
你可以在设置文件中更改默认的目录权限。这项功能在Django 1.7之后就有了,具体的说明可以在Django的文档中找到。需要注意的是,这样做会影响到Django创建的所有目录,包括静态文件的目录,所以要小心使用。
FILE_UPLOAD_DIRECTORY_PERMISSIONS = 0o755
把示例代码改成你想要的权限。我在示例代码中没有使用你请求的权限(0o777),是为了防止有人在没看说明的情况下直接复制。