2015-11-15 10 views
5

मैं डीआरएफ और jQuery के साथ फ़ाइल अपलोड बनाने की कोशिश कर रहा हूं। मैं googled और this sample मिला। मैं beckand पर कुछ इसी तरह कोड है:Django Rest Framework और फ़ाइल अपलोड करें

class Attachment(BaseModel): 
     file = models.FileField(upload_to=get_photo_path) 


class AttachmentSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = models.Attachment 
     fields = ('id', 'file') 

class AttachmentViewSet(viewsets.ModelViewSet): 
    parser_classes = (FileUploadParser,) 
    serializer_class = serializers.AttachmentSerializer 
    queryset = models.Attachment.objects.all() 

    def pre_save(self, obj): 
     obj.file = self.request.FILES.get('file') 

और जब कोशिश एक फ़ाइल अपलोड करने jQuery

var fd = new FormData() 
    fd.append('file', file) // file from file-field 
    var reader = new FileReader() 
    $.ajax({ 
     url: 'http://localhost:8001/files/', 
     data: fd, 
     processData: false, 
     contentType: false, 
     type: 'POST' 
    }).done(... 

करने कोणीय नमूना अनुवाद करने के लिए कुछ कारणों मैं बैकएंड पर एक त्रुटि है के लिए करने की कोशिश की:

detail: "FileUpload parse error - none of upload handlers can handle the stream" 

उत्तर

6

दरअसल समस्या एक प्रकार का पार्सर है। मैं अपलोड संचालकों हैं (FormParser, MultiPartParser,) के बजाय (FileUploadParser,)

3

डिफ़ॉल्ट Django का उपयोग करना चाहिए:

["django.core.files.uploadhandler.MemoryFileUploadHandler", "django.core.files.uploadhandler.TemporaryFileUploadHandler"] 

और वहाँ डिफ़ॉल्ट रूप से एप्लिकेशन सेटिंग फ़ाइल में कोई FILE_UPLOAD_HANDLERS पैरामीटर है।

मेरे मामले में मैं MemoryFileUploadHandler बाहर रखा गया और एप्लिकेशन सेटिंग फ़ाइल में

FILE_UPLOAD_HANDLERS = ["django.core.files.uploadhandler.TemporaryFileUploadHandler", ] 

सेट और यह समस्या हल हो गए हैं।