2014-10-25 3 views
0

Мое приложение имеет конечную точку tastypie, которая получила почтовые запросы с файлом (не большой ... 40-70kb) и должна сохранить файл, а затем обработать его. Однако, кажется, файл никогда не сохраняется после загрузки и, таким образом, пытается получить файл после сохранения. Я читал во многих местах об этом, но, похоже, у tastypie нет ни одного стандартного способа сделать это. Вот мои модели и ресурсы: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

Я, наконец, получил его на работу. Похоже, я не правильно публиковал, используя CURL. Теперь я использую это, чтобы загрузить файл:

curl -F "[email protected]/path/to/file.mp3" http://1**.**.***.**:8000/api/tag/ 

Перед тем, как путь пропал, перед ним не было «@». Добавив это исправленное.

Смежные вопросы