Tastypie没有保存上传的文件

时间:2014-10-25 11:24:25

标签: django tastypie

我的应用程序有一个tastypie端点,它接收带有文件(不大... 40-70kb)的post请求,并且应该保存文件然后处理它。但是,似乎文件永远不会在上载后保存,因此在保存失败后尝试检索文件。我已经在许多地方阅读了它,但似乎tastypie没有一种标准的方法。以下是我的模型和资源:

模型

class Tag(models.Model):
    track = models.FileField(upload_to='tags/', max_length=250)

    def __unicode__(self):
        return self.track.url

api_resource

class TagResource(MultipartResource, ModelResource):
    track = fields.FileField(attribute="track", null=True, blank=True)
    class Meta:
        queryset = Tag.objects.all()
        resource_name = 'tag'
        authorization = Authorization()
        object_class = Tag
        always_return_data = True

    def dehydrate(self, bundle):
        bundle.obj.save()
        #the processing operation on the saved file
        result = recognize(bundle.obj.track)
        bundle.data['tag'] = result
        return bundle

当我使用Curl发布文件时:

curl -F "track=/path/to/track/track.mp3" http://127.0.0.1:8000/api/tag/

我收到错误:

SuspiciousFileOperation: Attempted access to '/path/to/track/track.mp3'

经过进一步调查,我意识到错误是由于源文件的url上的目标操作而不是上传文件的url引起的。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我终于开始工作了。好像我没有使用CURL正确发布。我现在用它来上传文件:

curl -F "track=@/path/to/file.mp3" http://1**.**.***.**:8000/api/tag/

之前路径丢失之前的'@'。添加修复它。