2015-11-15 4 views
5

Я пытаюсь создать загрузку файлов с помощью DRF и 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", ] 

в настройках приложения файл и решить эту проблему.

Смежные вопросы