django rest fileupload返回链接

时间:2018-07-09 23:26:16

标签: python django django-rest-framework

我正在搜索stackoverflow,例如正在工作的文件上传APIView(使用最新版本的DRF),我已经尝试了许多不同的代码示例,但没有一个起作用(其中一些不推荐使用,一些-我不是我想要的) )

我有以下模型:

class Attachment(models.Model):
    type = models.CharField(max_length=15, null=False)
    attachment_id = models.CharField(max_length=50, primary_key=True)
    doc = models.FileField(upload_to="docs/", blank=True)

除了休息解析器外,我不想使用任何其他形式 我想在将来获取POST字段(例如名称)

我相信解决方案很简单,但这不起作用

class FileUploadView(APIView):
    parser_classes = (FileUploadParser,)

    def post(self, request):
        file_obj = request.FILES
        doc = Attachment.objects.create(type="doc", attachment_id=time.time())
        doc.doc = file_obj
        doc.save()
        return Response({'file_id': doc.attachment_id}, status=204)

1 个答案:

答案 0 :(得分:3)

删除parser_class将解决这里的几乎所有问题。尝试以下代码段

class FileUploadView(APIView):

    def post(self, request):
        file = request.FILES['filename']
        attachment = Attachment.objects.create(type="doc", attachment_id=time.time(), doc=file)
        return Response({'file_id': attachment.attachment_id}, status=204)


POSTMAN控制台的屏幕截图
enter image description here