2011-04-04 111 views
9

我在使用django播放圖片上傳時遇到了一些麻煩。我的腳本將創建基於日期目錄,像這樣:Django - 媒體上傳[Errno 13]權限被拒絕

file = models.FileField(upload_to='uploads/%m-%Y/') 

現在,如果我創建的上傳文件夾中的過時的目錄和chmod的文件夾爲755,上傳工作正常,但如果我嘗試和chmod的上傳文件夾,而不創建日期的子文件夾(我需要Django來做),我得到一個權限錯誤。

我該如何製作一個文件夾,以便創建子文件夾?

這裏是一個回溯:

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' 

回答

19

運行你的Python解釋器沒有寫權限到媒體目錄的過程。您需要將媒體目錄的chgrpchown與您的Python進程位於同一組,並確保至少有g+rwx目錄和g+rw文件。

+0

對不起,你能告訴我用什麼命令找出文件夾的權限嗎?我正在使用Ubuntu。 – Hanpan 2011-04-04 20:12:16

+0

嘗試'ls'命令,例如'ls -lha' – 2011-04-04 20:15:07

+2

你怎麼知道Python進程在哪個組?謝謝! – cloudrave 2013-05-02 17:19:12

8

我得到了同樣的錯誤,並通過改變修復:

MEDIA_ROOT = '/media/' 

到:

MEDIA_ROOT = 'media/' 

settings.py

相關問題