2009-08-13 13 views
1

私はdjangoアプリを開発中です。 1つはファイルのアップロード(スプレッドシートなど)です。 「ファイルアップロード」のDjangoアプリ名と「fyi.xml」でしたdjangoの問題をアップロードして文書を保存する

IOError at /fileupload/ 

[Errno 13] Permission denied: 'fyi.xml' 

は私がアップロードしたテストドキュメントだった:私はこのエラーを取得しています。

だから、私は、Apacheの[プロジェクトディレクトリ] /静的/文書/フォルダを書き込み可能にするためにはchmodとchownを使用しました。実際に私はちょうどchmod 777を作ってみました、まだ運がありません。

だから、私のMEDIA_ROOTがあった場所私のsettings.pyに、私はちょうど変更:次に

MEDIA_ROOT = '/var/www/static/' 

は、それがSELinuxのものだった場合、私は「を/ var/www /の静的で新しいドキュメントディレクトリを作成しました...

drwxr-xr-x 2 apache root 4096 Aug 13 11:20 documents 

は、それから私は、Apacheがここに書くことが許されるように、コンテキストを変更しようとするこれらのコマンドをしました。私はこのディストリビューションにあまり慣れていない、それはRed Hatの風味だから、chmodやchownを越えて権限の問題を解決する必要はなかった。

sudo chcon -h system_u:object_r:httpd_sys_content_t /var/www/static 
sudo chcon -R -h root:object_r:httpd_sys_content_t /var/www/static 
sudo chcon -R -h root:object_r:httpd_sys_content_t /var/www/static/* 

どれもこれに違いありません。正直言って、私はここでもSELinuxを持っていても肯定的ではありませんが、通常のUNIXのアクセス許可は機能していないようですので、試してみると思います。

だから、誰もが次のを見てどのようにアイデアを持っていますか?ここに私のviews.pyには何がありますどのくらいのコード私はここに投稿する必要がありますが、場合には、それが参考になるかわからない:

views.py 
from django.http import HttpResponseRedirect 
from django.shortcuts import render_to_response 
from forms import UploadFileForm 
from fyi.models import Materials 

def handle_uploaded_file(f): 
    destination = open('fyi.xml', 'wb+') 
    for chunk in f.chunks(): 
     destination.write(chunk) 
    destination.close() 


def upload_file(request): 
    if request.method == 'POST': 
     form = UploadFileForm(request.POST, request.FILES) 
     if form.is_valid(): 
      handle_uploaded_file(request.FILES['document']) 
      form.save() 
      template = 'upload_success.html' 
    else: 
     form = UploadFileForm() 
     template = 'fileupload.html' 
    return render_to_response(template, {'form': form}) 

...任意の助けいただければ幸いです。

答えて

0

多分変更してみてください:

destination = open('fyi.xml', 'wb+') 

のようなものに:

upload_dir = settings.MEDIA_ROOT # or wherever 
destination = open(os.path.join(upload_dir, 'fyi.xml'), 'wb+') 

を、それはSELinuxの問題がある場合は、おそらくこのページは役立つだろう:

+0

それはうまくいった、ありがとう! 他の人にとってはもちろん、私ももちろん追加する必要がありました: import os django.confのインポート設定 ... views.pyの先頭に。 – rossdavidh

+0

あなたは大歓迎です!それがうまくいってうれしい。 :) – ars

関連する問題