2012-03-13 2 views
0

моего Джанго приложения включает в себя написание большого количество файлов данные на сервер, часть моей модели пользовательского класса выглядит следующим образомДжанго FileField путь не возвращается правильно

class UserData(models.Model): 
    email = models.EmailField() 
    course_id = models.IntegerField() 
    data = models.FileField(upload_to=make_user_data_path) 

def make_user_data_path(instance, filename): 
    username, domain = instance.email.split('@') 
    name = username + '.bin' 
    return os.path.normpath(os.path.join('gameservice', 'userdata', domain, name)) 

при работе на моем локальном сервере я получаю файлы, сохраненные как dummy_1. bin, dummy_2.bin, dummy_3.bin ... и т. д. в app/uploads/gameservice/userdata/sgi-singapore /, он отлично работает

однако, когда я развертываю в heroku, похоже, что он не может получить данные .. im получение ошибок, подобных этому

media root =/app/uploads/

2012-03-13T05:15:28+00:00 app[web.1]: Traceback (most recent call last): 
2012-03-13T05:15:28+00:00 app[web.1]: ERROR 2012-03-13 05:15:28,332 base 7 140089546524416 Internal Server Error: /gameservice/f1440caf4ae6d02b26c2387d14769af9/1/user_data 
2012-03-13T05:15:28+00:00 app[web.1]:  response = callback(request, *callback_args, **callback_kwargs) 
2012-03-13T05:15:28+00:00 app[web.1]: File "/app/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response 
2012-03-13T05:15:28+00:00 app[web.1]: File "/app/lib/python2.7/site-packages/django/views/decorators/csrf.py", line 77, in wrapped_view 
2012-03-13T05:15:28+00:00 app[web.1]:  return func(request, *args, **kwargs) 
2012-03-13T05:15:28+00:00 app[web.1]: File "/app/lib/python2.7/site-packages/django/views/decorators/http.py", line 41, in inner 
2012-03-13T05:15:28+00:00 app[web.1]:  data = user_data.data.read() 
2012-03-13T05:15:28+00:00 app[web.1]: File "/app/lib/python2.7/site-packages/django/core/files/utils.py", line 16, in <lambda> 
2012-03-13T05:15:28+00:00 app[web.1]: File "/app/lib/python2.7/site-packages/django/core/files/storage.py", line 33, in open 
2012-03-13T05:15:28+00:00 app[web.1]:  read = property(lambda self: self.file.read) 
2012-03-13T05:15:28+00:00 app[web.1]:  return view_func(*args, **kwargs) 
2012-03-13T05:15:28+00:00 app[web.1]: File "/app/platformsite/gameservice/views.py", line 329, in user_data 
2012-03-13T05:15:28+00:00 app[web.1]:  self._file = self.storage.open(self.name, 'rb') 
2012-03-13T05:15:28+00:00 app[web.1]: File "/app/lib/python2.7/site-packages/django/db/models/fields/files.py", line 46, in _get_file 
2012-03-13T05:15:28+00:00 app[web.1]:  return self._open(name, mode) 
2012-03-13T05:15:28+00:00 app[web.1]: File "/app/lib/python2.7/site-packages/django/core/files/storage.py", line 156, in _open 
2012-03-13T05:15:28+00:00 app[web.1]:  return File(open(self.path(name), mode)) 
2012-03-13T05:15:28+00:00 app[web.1]: IOError: [Errno 2] No such file or directory: u'/app/uploads/gameservice/userdata/sgi-singapore.com/krislee_6547.bin' 

когда я выход экономия, это кажется правильным,

2012-03-13T05:06:42+00:00 app[web.1]: ERROR 2012-03-13 05:06:42,263 views 7 140236532705024 userdata post 
2012-03-13T05:06:42+00:00 app[web.1]: ERROR 2012-03-13 05:06:42,267 models 7 140236532705024 path saved = gameservice/userdata/sgi-singapore.com/krislee.bin 
2012-03-13T05:06:42+00:00 heroku[router]: POST pure-fire-3271.herokuapp.com/gameservice/4ed1c492de837e0cc41596378ed0fb9f/1/user_data dyno=web.1 queue=0 wait=0ms service=451ms status=200 bytes=5 
2012-03-13T05:06:43+00:00 app[web.1]: ERROR 2012-03-13 05:06:43,121 views 10 140236532705024 userdata post 
2012-03-13T05:06:43+00:00 app[web.1]: ERROR 2012-03-13 05:06:43,127 models 10 140236532705024 path saved = gameservice/userdata/sgi-singapore.com/krislee.bin 
2012-03-13T05:06:43+00:00 heroku[router]: POST pure-fire-3271.herokuapp.com/gameservice/4ed1c492de837e0cc41596378ed0fb9f/1/user_data dyno=web.1 queue=0 wait=0ms service=379ms status=200 bytes=5 
2012-03-13T05:06:43+00:00 app[web.1]: ERROR 2012-03-13 05:06:43,826 views 8 140236532705024 userdata post 
2012-03-13T05:06:43+00:00 app[web.1]: ERROR 2012-03-13 05:06:43,832 models 8 140236532705024 path saved = gameservice/userdata/sgi-singapore.com/krislee.bin 
2012-03-13T05:06:44+00:00 heroku[router]: POST pure-fire-3271.herokuapp.com/gameservice/4ed1c492de837e0cc41596378ed0fb9f/1/user_data dyno=web.1 queue=0 wait=0ms service=381ms status=200 bytes=5 
2012-03-13T05:06:44+00:00 app[web.1]: ERROR 2012-03-13 05:06:44,557 views 10 140236532705024 userdata post 
2012-03-13T05:06:44+00:00 app[web.1]: ERROR 2012-03-13 05:06:44,562 models 10 140236532705024 path saved = gameservice/userdata/sgi-singapore.com/krislee.bin 
2012-03-13T05:06:44+00:00 heroku[router]: POST pure-fire-3271.herokuapp.com/gameservice/4ed1c492de837e0cc41596378ed0fb9f/1/user_data dyno=web.1 queue=0 wait=0ms service=363ms status=200 bytes=5 
2012-03-13T05:06:45+00:00 app[web.1]: ERROR 2012-03-13 05:06:45,263 views 10 140236532705024 userdata post 
2012-03-13T05:06:45+00:00 app[web.1]: ERROR 2012-03-13 05:06:45,268 models 10 140236532705024 path saved = gameservice/userdata/sgi-singapore.com/krislee.bin 
2012-03-13T05:06:45+00:00 heroku[router]: POST pure-fire-3271.herokuapp.com/gameservice/4ed1c492de837e0cc41596378ed0fb9f/1/user_data dyno=web.1 queue=0 wait=0ms service=367ms status=200 bytes=5 
2012-03-13T05:06:46+00:00 heroku[router]: POST pure-fire-3271.herokuapp.com/gameservice/4ed1c492de837e0cc41596378ed0fb9f/1/save_score dyno=web.1 queue=0 wait=0ms service=154ms status=200 bytes=14 

как я это исправить?

+0

файл, похоже, не сохранен на сервере, heroku запустить cat /app/uploads/gameservice/userdata/sgi-singapore.com/krislee.bin не возвращает такой файл или каталог – henghonglee

ответ

1

Вы не можете загружать файлы на Heroku. Ваше приложение на heroku упаковано в git slug, поэтому его нельзя изменить во время выполнения. Используйте s3-сервис с файловым файлом S3 с чем-то вроде django-storage http://django-storages.readthedocs.org/en/latest/index.html

+0

Я хочу заменить мой файловые поля с пользовательскими хранилищами, например, здесь http://www.sourceguru.net/django-s3-storage-engine/, чтобы свести к минимуму изменения, которые я должен выполнить с моделью. я буду на правильном пути? – henghonglee

0

файлы, которые я загрузил, оказались файлами json, и я закончил тем, что переключил их в текстовые поля и загрузил эти файлы в базу данных, а не загружал файлы каталога. что решило мои проблемы отлично. если кому-то интересно

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