2009-03-04 3 views
5

누군가 장고 + SWFUpload에 대한 간단한 코드 샘플을 가지고 있습니까? 내 PHP 응용 프로그램에서 완벽하게 작동하지만 장고가 나에게 두통을주고있다.Django + SWFUpload의 코드 샘플은 무엇입니까?

+2

-1 ... 다음과 같습니다 : 없음 코드. -1 : 오류 추적 또는 기타 메시지가 없습니다. –

답변

17

안타깝게도 매우 자세한 코드 샘플을 제공 할 수는 없지만 SWFUpload + Django (작업중인 사진 공유 사이트의 경우) 작업에 대한 경험이 상당히 있습니다. 어쨌든, 여기에 희망 DjSWF 행복 : 대한 탐구에 도움이 될 몇 가지 포인터는

  1. 당신은 물론 당신이 세션 기반 인증의 일종을 사용하는 경우 (쿠키 플러그인을 사용하는 것이 좋습니다 [django.contrib.auth을 좋아하고 누가 무엇을 업로드했는지 알려줍니다.)

    쿠키 플러그인은 POST로 쿠키에서 데이터를 전송, 그래서 당신은 특정 URL에 request.POSTsettings.SESSION_COOKIE_NAME을 찾고 잘 request.COOKIES 작품으로 덤프 request.COOKIES (process_request 미들웨어에 다시이 점점 몇 가지 방법을 찾아야 할 것이다 for this :

  2. 또한 이 SWFUpload의 응답 본문에 성공적인 업로드 시도로 인식해야한다는 것을 기억해야합니다. 나는 이것이 SWFUpload의 최신 베타 버전에서 바뀌 었다고 생각하지만, 어쨌든 'ok'와 같이 거기에 뭔가를 붙여 두는 것이 좋습니다. 실패의 경우에는 HttpResponseBadRequest 같은 것을 사용하십시오.

  3. 당신이 그들을 찾는 데 문제가있는 경우 마지막으로, 업로드 된 파일은 내가 포함되지 않은 당혹 아무것도 경우 request.FILES :

더 자세한 무언가를 게시 할 수 주시기에 기꺼이 도와 드리겠습니다. SWFUpload에 대한 샘플의

+4

이것은 정말 끔찍한 질문에 대한 훌륭한 답변입니다. 요점 (1)의 두 번째 단락은 특히 나를 도왔습니다. 감사. – bouvard

0

다음은이 문제를 해결하기위한 장고 관련 구현입니다 (예 : Firefox에서 302 리디렉션을 사용한 업로드에 실패했습니다). 그것을 업 로더와 함께 페이지를 생성하는 내 초기보기에서

, 내가 (파이어 폭스를 사용하는 경우) 쿠키를 쳐다 보면서 나는 SWFUploadMiddleware에 게시되고 있던 것을 보았을 때 세션 ID

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

발견 세션 ID가 설정되지 않은 것을 발견했습니다.

업로드 처리기가 포함 된 페이지를 생성하는 초기보기에서 세션 ID를 컨텍스트에 추가했습니다. 나는 SWFUploadMiddleware에서 보았을 때

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

, 나는 세션 id가, 를 게시되고 볼 수 있습니다 : 다음과 같이 내 swfuploader 설정에서

context['sessionid'] = self.request.session.session_key 

, 나는 포스트 PARAMS 옵션에 세션 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'] 
관련 문제