2017-08-09 11 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イメージですか?この場合、ModelSerializerをdrf_base64.serializersからインポートし、それを継承する必要があります。

+0

問題はパーサで、私はMultiPartParserの代わりにFileUploadParserを使用しました:)ありがとうございます! –