我的应用程序有一个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引起的。
我做错了什么?
答案 0 :(得分:0)
我终于开始工作了。好像我没有使用CURL正确发布。我现在用它来上传文件:
curl -F "track=@/path/to/file.mp3" http://1**.**.***.**:8000/api/tag/
之前路径丢失之前的'@'。添加修复它。