Pergunta

Alguém tem alguma exemplos de código simples para Django + SWFUpload ? Eu tenho que trabalhar perfeitamente na minha aplicação PHP, mas Django está me dando dor de cabeça.

Foi útil?

Solução

Infelizmente não posso dar-lhe quaisquer amostras de código muito detalhado, mas eu tenho um pouco de experiência com o trabalho com SWFUpload + Django (para um compartilhamento de fotos site que eu trabalho por diante). De qualquer forma, aqui estão algumas dicas que espero ajudá-lo em sua busca pela felicidade DjSWF:)

  1. Você vai querer usar os cookies do plug-in (se é claro que você está usando algum tipo de autenticação baseada em sessão [como django.contrib.auth, e os cuidados que carregou o).

    Os biscoitos plug-in envia os dados de cookies como POST, então você vai ter que encontrar alguma maneira de conseguir isso de volta para request.COOKIES (middleware process_request que procura uma settings.SESSION_COOKIE_NAME em request.POST em URLs específicos e despeja-lo em request.COOKIES funciona bem para isto:)

  2. Além disso, lembre-se que você deve retorno algo no corpo da resposta para SWFUpload reconhecê-lo como uma tentativa de upload bem-sucedido. Eu acredito que este mudou na última versão beta do SWFUpload, mas de qualquer forma é aconselhável apenas para algo vara lá como 'ok'. Para falhas, fazer uso de algo como HttpResponseBadRequest ou similar.

  3. Por último, no caso de você está tendo problemas para encontrá-los, o arquivo enviado é em request.FILES:)

Se você tem alguma coisa desconcertante eu não ter coberto, fique à vontade para postar algo mais detalhado e eu vou ser feliz para ajudar.

Outras dicas

Versão Django das amostras para SWFUpload:

http://github.com/naltimari/django-swfupload-samples / árvore / master

Enquanto Uploadify. Grande ideia, mas é apenas de buggy, especialmente no Windows.

A seguir é a minha implementação específica do Django para corrigir esse problema (ou seja, os meus envios estavam falhando no Firefox com um 302 Redirect).

Na minha visão inicial que gera a página com o uploader sobre ele, eu olhei para os biscoitos e encontrou idsessão

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

Quando eu olhei para o que estava sendo publicado na SWFUploadMiddleware (quando usando o Firefox), descobri que o sessionid não estava sendo definido.

No meu ponto de vista intial que gera a página que contém o manipulador de upload, eu adicionei o sessionid ao contexto.

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

Em minhas configurações swfuploader, acrescentei sessionid para a opção de pós-params da seguinte forma:

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

Agora, quando eu olhei no SWFUploadMiddleware, eu podia ver o ser idsessão postado, e os meus envios começou a trabalhar se o Firefox .

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

Para completar, meus SWFUploadMiddleware olhares como este ...

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']
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top