首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django -媒体上传[Errno 13]权限被拒绝

Django -媒体上传[Errno 13]权限被拒绝
EN

Stack Overflow用户
提问于 2011-04-05 03:58:22
回答 6查看 20.8K关注 0票数 13

我很难让django在上传图片时表现得很好。我的脚本将根据日期创建目录,如下所示:

代码语言:javascript
复制
file = models.FileField(upload_to='uploads/%m-%Y/')

现在,如果我在uploads文件夹中创建了带日期的目录,并将文件夹chmod设置为755,上传可以正常工作,但如果我试图chmod上传文件夹而不创建带日期的子文件夹(我需要django来做),我会得到一个权限错误。

如何使文件夹允许创建子文件夹?

这是一个回溯:

代码语言:javascript
复制
Django Version: 1.3
Python Version: 2.5.2
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.admin',
 'tagging',
 'mediamanager',
 'livesettings',
 'projects']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware')


Traceback:
File "/var/lib/python-support/python2.5/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/var/lib/python-support/python2.5/django/utils/decorators.py" in _wrapped_view
  93.                     response = view_func(request, *args, **kwargs)
File "/var/lib/python-support/python2.5/django/contrib/auth/decorators.py" in _wrapped_view
  23.                 return view_func(request, *args, **kwargs)
File "/var/www/enigma-dev/enigma/mediamanager/views.py" in upload_media
  24.           m.upload_media(data=form.cleaned_data, params=params)
File "/var/www/enigma-dev/enigma/mediamanager/models.py" in upload_media
  63.       self.save()
File "/var/lib/python-support/python2.5/django/db/models/base.py" in save
  460.         self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/var/lib/python-support/python2.5/django/db/models/base.py" in save_base
  543.                         for f in meta.local_fields if not isinstance(f, AutoField)]
File "/var/lib/python-support/python2.5/django/db/models/fields/files.py" in pre_save
  255.             file.save(file.name, file, save=False)
File "/var/lib/python-support/python2.5/django/db/models/fields/files.py" in save
  92.         self.name = self.storage.save(name, content)
File "/var/lib/python-support/python2.5/django/core/files/storage.py" in save
  49.         name = self._save(name, content)
File "/var/lib/python-support/python2.5/django/core/files/storage.py" in _save
  166.             os.makedirs(directory)
File "/usr/lib/python2.5/os.py" in makedirs
  171.     mkdir(name, mode)

Exception Type: OSError at /media-manager/upload/
Exception Value: [Errno 13] Permission denied: '/var/www/site-dev/site/static/uploads/04-2011'
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-04-05 04:01:33

运行Python解释器的进程没有写入媒体目录的权限。您需要将媒体目录chgrpchown放到与Python进程相同的组中,并确保目录上至少有g+rwx,文件上至少有g+rw

票数 22
EN

Stack Overflow用户

发布于 2015-07-08 21:27:20

我得到了相同的错误,并通过更改以下内容来修复它:

代码语言:javascript
复制
MEDIA_ROOT = '/media/'

至:

代码语言:javascript
复制
MEDIA_ROOT = 'media/'

settings.py下。

票数 24
EN

Stack Overflow用户

发布于 2020-12-15 09:20:42

对于我来说,我忘记在我的生产服务器上的settings.py文件中添加: MEDIA_ROOT = os.path.join(BASE_DIR,'media')。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5543641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档