Las muestras de código para Django + SWFUpload?

¿Alguien tiene algún ejemplo de código simple para Django + SWFUpload ? Lo tengo funcionando perfectamente en mi aplicación PHP, pero Django me está dando dolores de cabeza.

Desafortunadamente, no puedo darte ejemplos de código muy detallados, pero tengo bastante experiencia con el trabajo con SWFUpload + Django (para un sitio para compartir fotos en el que trabajo). De todos modos, aquí hay algunos consejos que con suerte te ayudarán en tu búsqueda de la felicidad de DjSWF 🙂

  1. django.contrib.auth usar el complemento de cookies (si, por supuesto, está usando algún tipo de autenticación basada en sesión [como django.contrib.auth , y cuida quién subió qué).

    El complemento de cookies envía los datos de las cookies como POST, por lo que tendrá que encontrar la manera de volver a request.COOKIES funciona muy bien para esto 🙂

  2. Además, recuerde que debe devolver algo en el cuerpo de la respuesta para que SWFUpload lo reconozca como un bash exitoso de carga. Creo que esto ha cambiado en la última versión beta de SWFUpload, pero de todos modos es aconsejable que se coloque algo como ‘ok’. En caso de fallas, use algo como HttpResponseBadRequest o similares.

  3. Por último, en caso de que tenga problemas para encontrarlos, el archivo cargado se solicita. request.FILES 🙂

Si tiene algo desconcertante que no haya cubierto, siéntase libre de publicar algo más detallado y con gusto lo ayudaré.

Versión Django de las muestras para SWFUpload:

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

Por tanto tiempo subido. Gran idea, pero es simplemente buggy, especialmente en Windows.

La siguiente es mi implementación específica de Django para solucionar este problema (es decir, mis subidas fallaron en Firefox con un Redireccionamiento 302).

En mi vista inicial que genera la página con el cargador en él, miré las cookies y encontré un id de sesión

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

Cuando miré lo que se estaba publicando en el SWFUploadMiddleware (cuando utilizaba Firefox), descubrí que no se estaba configurando el id de sesión.

En mi vista inicial que genera la página que contiene el controlador de carga, agregué el sessionid al contexto.

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

En la configuración de mi swfuploader, agregué sessionid a la opción post-params de la siguiente manera:

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

Ahora, cuando miré en el SWFUploadMiddleware, pude ver que se estaba publicando la ID de sesión y que mis subidas comenzaron a funcionar si Firefox .

 ipdb> request.POST  

Para completar, mi SWFUploadMiddleware tiene este aspecto …

 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']