4

Django のローカル バージョンでは画像のアップロードが期待どおりに処理されているのに、私のサーバーでは処理されていないという問題があります。注: MediaTemple.net (グリッド サーバー) で Django コンテナーを使用しています。

これが私のコードです。

def view_settings(request):    
<snip>
if request.POST:
    success_msgs = ()
    mForm = MainProfileForm(request.POST, request.FILES, instance = mProfile)
    pForm = ChangePasswordForm(request.POST)
    eForm = ChangeEmailForm(request.POST)
    if mForm.is_valid():
        m = mForm.save(commit = False)
        if mForm.cleaned_data['avatar']:
            m.avatar = upload_photo(request.FILES['avatar'], settings.AVATAR_SAVE_LOCATION)
        m.save()
        success_msgs += ('profile pictured updated',)
            <snip>

def upload_photo(data,saveLocation):
    savePath = os.path.join(settings.MEDIA_ROOT, saveLocation, data.name) 
    destination = open(savePath, 'wb+')
    for chunk in data.chunks():
        destination.write(chunk)
    destination.close()
    return os.path.join(saveLocation, data.name)

ここが奇妙になる場所であり、誰かがこのエラーに光を当ててくれることを望んでいました。

  • エラーコードが間違っている、または
  • ファイルが完全に処理される前に、ファイルで何かが起こっています。

要約すると、ファイルは実際にはサーバーの意図したディレクトリにアップロードされましたが、このエラーメッセージは引き続き表示されます。

/user/settings の IOError

[Errno 2] そのようなファイルまたはディレクトリはありません: u'/home/user66666/domains/example.com/html/media/images/avatars/DSC03852.JPG'

環境:

リクエスト方法: POST リクエスト URL: http://111.111.111.111:2011/user/settings Django バージョン: 1.0.2 最終版 Python バージョン: 2.4.4 インストール済みアプリケーション: ['django.contrib.auth', 'django.contrib. contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'ctrlme', 'usertools', 'easy_thumbnails'] インストールされたミドルウェア: ('django.middleware.common.CommonMiddleware', 'django.contrib. sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware')

トレースバック: ファイル "/home/user6666/containers/django/leonidas/usertools/views.py" in view_settings 5​​1. m.avatar = upload_photo(request.FILES['avatar'], settings.AVATAR_SAVE_LOCATION) ファイル "/home/user666666 /containers/django/leonidas/usertools/functions.py" in upload_photo 91. destination = open(savePath, 'wb+')

4

0 に答える 0