2017-08-09 55 views
0

我有型號產品:Django的REST框架,圖像突破上上傳

class Product(models.Model): 
    ... 
    image = models.ImageField(
     upload_to=lambda instance, filename: 'images/{0}/{1}'.format(instance.id, filename), 
     max_length=254, blank=True, null=True 
    ) 
    ... 

然後,我有串行:

class ProductSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Product 
     fields = (
      ... 
      'image', 
      ... 
     ) 

然後我有意見:

class ProductViewSet(BaseViewSet, viewsets.ModelViewSet): 
    queryset = Product.objects.all() 
    serializer_class = ProductSerializer 
    @detail_route(methods=['POST']) 

    def upload_image(self, request, *args, **kwargs): 
     upload = request.data['file'] 
     print(upload.name) 
     product = self.get_object() 
     product.image.delete() 

     upload = request.data['file'] 
     product.image.save(upload.name, upload) 

     return Response({'Location': product.image.url}, status=status.HTTP_201_CREATED) 

問題是隻有圖像。在瀏覽器黑色窗口中上傳圖像更改的「源代碼」,並且無法打開它。 MP3和PDF格式正常工作。爲什麼會發生?謝謝。

回答

1

也許問題是與base64圖像?在這種情況下,您應該從drf_base64.serializers中導入ModelSerializer並從中繼承。

+0

問題是解析器,我用FileUploadParser而不是MultiPartParser :)謝謝! –