Hat jemand irgendwelche einfachen Codebeispiele für Django + SWFUpload? Ich habe es perfekt in meiner PHP-Anwendung funktioniert, aber Django gibt mir Kopfschmerzen.Codebeispiele für Django + SWFUpload?
Antwort
Leider kann ich Ihnen keine sehr detaillierten Codebeispiele geben, aber ich habe ziemlich viel Erfahrung in der Arbeit mit SWFUpload + Django (für eine Foto-Sharing-Site, an der ich arbeite). Wie auch immer, hier sind ein paar Hinweise, die hoffentlich für DjSWF Glück auf Ihrer Suche :)
Sie wollen helfen werden die Cookies-Plugin verwenden (wenn natürlich Sie irgendeine Art von sitzungsbasierte Authentifizierung verwenden [wie
django.contrib.auth
, und kümmern, wer was hochgeladen hat).Die Cookies Plugin sendet die Daten von Cookies als POST, so dass Sie einen Weg, dies zu, wieder in
request.COOKIES
(process_request
Middleware finden müssen, die für einesettings.SESSION_COOKIE_NAME
inrequest.POST
auf bestimmte URLs aussieht und gibt sie inrequest.COOKIES
funktioniert gut für dieses :)Denken Sie auch daran, dass Sie müssen etwas zurück in den Antworttextkörper für SWFUpload, um es als einen erfolgreichen Upload-Versuch zu erkennen. Ich glaube, das hat sich in der letzten Betaversion von SWFUpload geändert, aber trotzdem ist es ratsam, etwas reinzulegen, wie 'ok'. Verwenden Sie für Fehler etwas wie
HttpResponseBadRequest
oder dergleichen.Schließlich, falls Sie Probleme, sie zu finden ist, ist die hochgeladene Datei in
request.FILES
:)
Wenn Sie etwas verwirrenden Ich habe nicht abgedeckt haben, etwas ausführlichere frei fühlen zu schreiben und ich werde glücklich sein zu helfen.
Dies ist eine ausgezeichnete Antwort auf eine wirklich schreckliche Frage. Insbesondere der zweite Absatz von Punkt 1 hat mir geholfen. Vielen Dank. – bouvard
Django Version der Proben für SWFUpload:
http://github.com/naltimari/django-swfupload-samples/tree/master
So lange Uploadify. Tolle Idee, aber es ist einfach fehlerhaft, besonders unter Windows.
Die folgende Django-spezifische Implementierung zur Behebung dieses Problems (d. H., Meine Uploads sind in Firefox mit einem 302 Redirect fehlgeschlagen).
In meiner ersten Ansicht, dass die Seite mit dem Uploader auf sie erzeugt, sah ich die Plätzchen und fand sessionid
ipdb> self.request.COOKIES
{'csrftoken': '43535f552b7c94563ada784f4d469acf', 'sessionid': 'rii380947wteuevuus0i5nbvpc6qq7i1'}
Als ich sah, was in der SWFUploadMiddleware geschrieben wurde (wenn Firefox), Ich habe festgestellt, dass die SessionID nicht gesetzt wurde.
In meiner ursprünglichen Ansicht, die die Seite generiert, die den Upload-Handler enthält, habe ich die sessionid zum Kontext hinzugefügt.
context['sessionid'] = self.request.session.session_key
In meiner swfuploader Einstellungen, fügte ich sessionid auf die Post-params Option wie folgt:
post_params: {... "sessionid": "{{ sessionid }}" ...},
Nun, wenn ich in der SWFUploadMiddleware sah, konnte ich sehen, die sessionid geschrieben werden, und Meine Uploads funktionierten, wenn Firefox.
ipdb> request.POST
<QueryDict: {... u'session_id': [u'rii380947wteuevuus0i5nbvpc6qq7i1'],...}>
Für Vollständigkeit, sieht meine SWFUploadMiddleware so ...
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']
-1: kein Code. -1: Kein Fehler Traceback oder andere Nachrichten. –