私は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})
...任意の助けいただければ幸いです。
それはうまくいった、ありがとう! 他の人にとってはもちろん、私ももちろん追加する必要がありました: import os django.confのインポート設定 ... views.pyの先頭に。 – rossdavidh
あなたは大歓迎です!それがうまくいってうれしい。 :) – ars