2009-03-04 6 views
5

誰もDjango + SWFUploadの簡単なコードサンプルを持っていますか?私はそれが私のPHPアプリケーションでは完全に動作していますが、Djangoは私に頭痛を与えています。Django + SWFUploadのコードサンプル?

+2

-1:いいえコード。 -1:エラーなしトレースバックまたはその他のメッセージ。 –

答えて

17

残念ながら、私はあなたに非常に詳細なコードサンプルを与えることはできませんが、私はSWFUpload + Django(私が作業している写真共有サイト用)でかなりの経験があります。とにかく、ここでうまくいけばDjSWFの幸せのためにあなたの探求であなたを助けるいくつかのポインタ:)

  1. あなたはもちろん、あなたがセッションベースの認証のいくつかの並べ替えを使用している場合(クッキープラグインを使用したいと思うです[django.contrib.authのように、誰が何をアップロードしたか)。

    クッキープラグインがPOSTとしてクッキーからデータを送信しますので、あなたは、特定のURLにrequest.POSTsettings.SESSION_COOKIE_NAMEを探して、うまくrequest.COOKIES作品にそれをダンプしrequest.COOKIESprocess_requestミドルウェアに戻し、これを取得するいくつかの方法を見つける必要がありますこのために:

  2. また、は、SWFUploadが成功したアップロードの試みとして認識するためのレスポンス本文に何かを返さなければならないことに注意してください。私はこれがSWFUploadの最新ベータ版で変更されたと信じていますが、とにかく「ok」のようなものをそこに貼ることをお勧めします。失敗の場合は、HttpResponseBadRequestなどのようなものを使用してください。

  3. 最後に、あなたがトラブルにそれらを見つけるのを持っている場合には、アップロードされたファイルはrequest.FILESである:)

あなたは、私がカバーされていない厄介な何かを持っている場合は、より詳細な何かを掲示すること自由に感じ私は喜んでお手伝いします。

+4

これは本当にひどい疑問に対する優れた答えです。ポイント(1)の第2段落は私を特に助けました。ありがとう。 – bouvard

0

以下は、この問題を修正するためのDjango固有の実装です(Firefoxの302リダイレクトでアップロードが失敗した)。

は、その上にアップロードしてページを生成し、私の最初のビューでは、私はクッキーを見て、私は(Firefoxを使用する場合)SWFUploadMiddlewareに掲載されていたものを見たとき

ipdb> self.request.COOKIES 
{'csrftoken': '43535f552b7c94563ada784f4d469acf', 'sessionid': 'rii380947wteuevuus0i5nbvpc6qq7i1'} 

をSESSIONID見つけ、セッションIDが設定されていないことがわかりました。

アップロードハンドラを含むページを生成する私の初期の見解では、コンテキストにsessionidを追加しました。

私swfuploader設定で
context['sessionid'] = self.request.session.session_key 

次のように、私はポストのparamsオプションにセッションIDを追加しました:今

post_params: {... "sessionid": "{{ sessionid }}" ...}, 

、私はSWFUploadMiddlewareで見たとき、私はセッションIDが掲載されて見ることができ、とFirefoxの場合、私のアップロードが始まりました。完全のために

ipdb> request.POST 
<QueryDict: {... u'session_id': [u'rii380947wteuevuus0i5nbvpc6qq7i1'],...}> 

、私のSWFUploadMiddlewareはこのようになります...

from django.conf import settings 
from django.core.urlresolvers import reverse 

class SWFUploadMiddleware(object): 
    def process_request(self, request): 
     if (request.method == 'POST') and (request.path == reverse('upload_handler')) and request.POST.has_key(settings.SESSION_COOKIE_NAME): 
      request.COOKIES[settings.SESSION_COOKIE_NAME] = request.POST[settings.SESSION_COOKIE_NAME] 
    # http://stackoverflow.com/questions/6634666/403-forbidden-error-on-swfupload-and-django 
    # Fix for problem uploading images (403 error) in Firefox 20 and others 
    if request.POST.has_key('csrftoken'): 
      request.COOKIES['csrftoken'] = request.POST['csrftoken'] 
関連する問題