2009-03-04 12 views
5

क्या किसी के पास Django + SWFUpload के लिए कोई आसान कोड नमूने है? मैंने अपने PHP एप्लिकेशन में पूरी तरह से काम किया है लेकिन Django मुझे सिरदर्द दे रहा है।Django + SWFUpload के लिए कोड नमूने?

+2

-1: नहीं कोड। -1: कोई त्रुटि ट्रेसबैक या अन्य संदेश नहीं। –

उत्तर

17

दुर्भाग्य से मैं आप किसी भी बहुत विस्तृत कोड नमूने नहीं दे सकता है, लेकिन मैं (एक तस्वीर साझा साइट मैं पर काम के लिए) SWFUpload + Django के साथ काम करने के साथ काफी अनुभव का एक सा है। वैसे भी, यहाँ कुछ संकेत दिए गए कि उम्मीद है कि DjSWF खुशी :) के लिए अपने खोज पर मदद मिलेगी रहे हैं

  1. आप (यदि निश्चित रूप से आप सत्र-आधारित प्रमाणीकरण किसी प्रकार का उपयोग कर रहे हैं कुकीज़ प्लगइन का उपयोग करना चाहते हैं [django.contrib.auth की तरह, और देखभाल जो अपलोड की गई)।

    कुकीज़ प्लगइन पोस्ट के रूप में कुकी का डेटा भेजता है, तो आप इस वापस request.COOKIES (process_request मिडलवेयर कि request.POST विशिष्ट URL पर में एक settings.SESSION_COOKIE_NAME के लिए लग रहा है और request.COOKIES कार्यों में यह अच्छी तरह उदासीनता में होने का कोई रास्ता ढूंढना होगा इसके लिए :)

  2. यह भी याद रखें कि एसडब्ल्यूएफयूप्लोड के लिए प्रतिक्रिया निकाय में कुछ सफल अपलोड प्रयास के रूप में पहचानने के लिए कुछ चाहिए। मेरा मानना ​​है कि यह SWFUpload के नवीनतम बीटा में बदल गया है, लेकिन वैसे भी यह सलाह दी जाती है कि वहां कुछ ठीक है जैसे 'ठीक'। असफलताओं के लिए, HttpResponseBadRequest या जैसा कुछ का उपयोग करें।

  3. अन्त में, स्थिति में आप उन्हें खोजने में परेशानी हो रही, अपलोड की गई फ़ाइल में request.FILES :)

आप कुछ भी हैरान मैं शामिल नहीं किया है है, तो और अधिक विस्तृत कुछ पोस्ट करने के लिए स्वतंत्र महसूस है और मुझे मदद करने में खुशी होगी।

+4

यह वास्तव में एक भयानक सवाल का एक उत्कृष्ट जवाब है। बिंदु (1) के दूसरे अनुच्छेद ने मुझे विशेष रूप से मदद की। धन्यवाद। – bouvard

0

निम्नलिखित मेरी इस मुद्दे (अर्थात मेरे अपलोड एक 302 रीडायरेक्ट साथ फ़ायरफ़ॉक्स में नाकाम रहने के थे) ठीक करने के लिए Django विशेष कार्यान्वयन है।

मेरी प्रारंभिक ध्यान में रखते हुए कि उस पर अपलोड करने वाले के साथ पेज उत्पन्न करता है, मैं कुकीज़ को देखा और जब मैं क्या SWFUploadMiddleware में तैनात किया जा रहा था को देखा sessionid

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

पाया (जब Firefox का उपयोग कर), मैंने पाया कि सत्रीय सेट नहीं किया जा रहा था।

मेरी आरंभिक विचार है कि पेज जो अपलोड हैंडलर शामिल होती है में, मैं संदर्भ के लिए sessionid गयी।

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

मेरी swfuploader सेटिंग्स में, मैं के बाद पैरामीटर विकल्प को sessionid जोड़ा इस प्रकार है:

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

अब, जब मैं SWFUploadMiddleware में देखा, मैं देख सकता sessionid पोस्ट किए जाने से, और फ़ायरफ़ॉक्स पर मेरे अपलोड काम करना शुरू कर दिया।

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'] 
संबंधित मुद्दे