2016-10-19 4 views
0

models.py:

class File(models.Model): 
    name = models.CharField(verbose_name="File name", max_length=200, blank=True, null=True) 
    file = models.FileField(upload_to='files/%Y/%m/%d') 
    upload_at = models.DateTimeField(auto_now_add=True) 
    user = models.ForeignKey(User, related_name="uploader", blank=True, null=True) 

    def __str__(self): 
     return str(self.name) 

Serializer.py

class FileSerializer(ModelSerializer): 

    class Meta: 
     model = File 
     fields = ("id", "file", "upload_at", "user") 

views.py:

class FileView(APIView): 
    parser_classes = [FileUploadParser, MultiPartParser] 
    serializer_class = FileSerializer 
    permission_classes = [IsAuthenticated] 
    authentication_classes = [TokenAuthentication] 

    # @method_decorator(csrf_exempt) 
    def post(self, request, format=None): 
     serializer = FileSerializer(data=request.FILES) 
     if serializer.is_valid(): 
      serializer.save() 
      return Response(serializer.data, status=HTTP_200_OK) 
     return Response(serializer.errors, status=HTTP_400_BAD_REQUEST) 

Anythings работает отлично, но когда загрузки файла изображения повреждены!Джанго загрузка файлов не работает мелкий

enter image description here

Где я делаю ошибку?


UPDATE

каждый загруженный файл содержит начинается эта строка в файле:

------WebKitFormBoundarybe2fuJLynmLSubNO^M 
Content-Disposition: form-data; name=""; filename="2bc794eead99bf38140524ecbfa7e001_large.jpeg"^M 
Content-Type: image/jpeg^M 
^M 

Почему? Как я могу удалить это?

ответ

0

Как documentation mentions:

FileUploadParser для использования с носителями клиентов, которые могут загружать файл в качестве запроса необработанных данных. Для веб-загрузок или для собственных клиентов с поддержкой многопользовательской загрузки вместо этого следует использовать парсер MultiPartParser.

Вы должны удалить FileUploadParser в ваших анализаторах или переместить MultiPartParser как первый.

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