Скорее всего Вам надо передавать файлы в формате base64. Сделайте свое поле и добавить в сериалайзер. Что-нибудь типа такого:
import base64
import binascii
from rest_framework import serializers
from rest_framework.exceptions import ValidationError
from django.core.files.base import ContentFile
AVAILABLE_FILE_FORMAT = ['pdf', 'doc', 'docx', 'jpg', 'jpeg', 'png', 'xlsx', 'xls', 'odt', 'zip', 'gzip']
class Base64FileField(serializers.FileField):
def to_internal_value(self, data):
filetype = data.get('filetype', False)
filename = data.get('filename', False)
strdata = data.get('base64', False)
if filetype and filename and strdata:
ext = filetype.split('/')[-1]
if ext in AVAILABLE_FILE_FORMAT:
try:
decoded_file = base64.b64decode(strdata)
except (TypeError, binascii.Error):
raise ValidationError(FILE_VALUE_ERROR_TEXT)
data = ContentFile(decoded_file, name=filename)
else:
raise ValidationError(FILE_FORMAT_ERROR_TEXT)
return super(Base64FileField, self).to_internal_value(data)
def to_representation(self, value):
return value.name
Updated 11 Dec. 2016, 12:51 by TheFool.