1

i am trying to use django-storages with dropbox. I did everything like in docs:

set DEFAULT_FILE_STORAGE = 'storages.backends.dropbox.DropBoxStorage',

DROPBOX_OAUTH2_TOKEN = 'MY_ACCESS_TOKEN'
DROPBOX_ROOT_PATH = 'media'

But when I'm trying to upload images on heroku, i got an error in logs:

TypeError: expected request_binary as binary type, got
class'django.core.files.uploadedfile.InMemoryUploadedFile'

full traceback:

2017-08-23T09:11:48.956735+00:00 app[web.1]: [2017-08-23 12:11:48,874] exception: ERROR - Internal Server Error: /en/create/ 2017-08-23T09:11:48.956748+00:00 app[web.1]: Traceback (most recent call last): 2017-08-23T09:11:48.956749+00:00 app[web.1]: File /app/.heroku/python/lib/python3.5/site-packages/django/core/handlers/exception.py", line 41, in inner 2017-08-23T09:11:48.956750+00:00 app[web.1]: response = get_response(request) 2017-08-23T09:11:48.956751+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response 2017-08-23T09:11:48.956752+00:00 app[web.1]: response = self.process_exception_by_middleware(e, request) 2017-08-23T09:11:48.956752+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response 2017-08-23T09:11:48.956753+00:00 app[web.1]: response = wrapped_callback(request, *callback_args, **callback_kwargs) 2017-08-23T09:11:48.956754+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/views/generic/base.py", line 68, in view 2017-08-23T09:11:48.956754+00:00 app[web.1]: return self.dispatch(request, *args, **kwargs) 2017-08-23T09:11:48.956755+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/views/generic/base.py", line 88, in dispatch 2017-08-23T09:11:48.956756+00:00 app[web.1]: return handler(request, *args, **kwargs) 2017-08-23T09:11:48.956756+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/views/generic/edit.py", line 217, in post 2017-08-23T09:11:48.956757+00:00 app[web.1]: return super(BaseCreateView, self).post(request, *args, **kwargs) 2017-08-23T09:11:48.956760+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/views/generic/edit.py", line 183, in post 2017-08-23T09:11:48.956760+00:00 app[web.1]: return self.form_valid(form) 2017-08-23T09:11:48.956761+00:00 app[web.1]: File "/app/articles/views.py", line 255, in form_valid 2017-08-23T09:11:48.956762+00:00 app[web.1]: articleimages.save() 2017-08-23T09:11:48.956762+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/forms/models.py", line 649, in save 2017-08-23T09:11:48.956763+00:00 app[web.1]: return self.save_existing_objects(commit) + self.save_new_objects(commit) 2017-08-23T09:11:48.956763+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/forms/models.py", line 783, in save_new_objects 2017-08-23T09:11:48.956763+00:00 app[web.1]: self.new_objects.append(self.save_new(form, commit=commit)) 2017-08-23T09:11:48.956764+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/forms/models.py", line 932, in save_new 2017-08-23T09:11:48.956767+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/base.py", line 836, in save_base 2017-08-23T09:11:48.956767+00:00 app[web.1]: updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields) 2017-08-23T09:11:48.956768+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/base.py", line 922, in _save_table 2017-08-23T09:11:48.956765+00:00 app[web.1]: obj.save() 2017-08-23T09:11:48.956765+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/base.py", line 806, in save 2017-08-23T09:11:48.956766+00:00 app[web.1]: force_update=force_update, update_fields=update_fields) 2017-08-23T09:11:48.956772+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1098, in execute_sql 2017-08-23T09:11:48.956769+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/base.py", line 961, in _do_insert 2017-08-23T09:11:48.956770+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/manager.py", line 85, in manager_method 2017-08-23T09:11:48.956769+00:00 app[web.1]: using=using, raw=raw) 2017-08-23T09:11:48.956770+00:00 app[web.1]: return getattr(self.get_queryset(), name)(*args, **kwargs) 2017-08-23T09:11:48.956771+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/query.py", line 1061, in _insert 2017-08-23T09:11:48.956772+00:00 app[web.1]: return query.get_compiler(using=using).execute_sql(return_id) 2017-08-23T09:11:48.956768+00:00 app[web.1]: result = self._do_insert(cls._base_manager, using, fields, update_pk, raw) 2017-08-23T09:11:48.956774+00:00 app[web.1]: for obj in self.query.objs 2017-08-23T09:11:48.956773+00:00 app[web.1]: for sql, params in self.as_sql(): 2017-08-23T09:11:48.956773+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1051, in as_sql 2017-08-23T09:11:48.956774+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1051, in 2017-08-23T09:11:48.956776+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1050, in 2017-08-23T09:11:48.956775+00:00 app[web.1]: for obj in self.query.objs 2017-08-23T09:11:48.956776+00:00 app[web.1]: [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields] 2017-08-23T09:11:48.956777+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1000, in pre_save_val 2017-08-23T09:11:48.956779+00:00 app[web.1]: file.save(file.name, file.file, save=False) 2017-08-23T09:11:48.956779+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/fields/files.py", line 95, in save 2017-08-23T09:11:48.956780+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/files/storage.py", line 54, in save 2017-08-23T09:11:48.956787+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/storages/backends/dropbox.py", line 111, in _save 2017-08-23T09:11:48.956786+00:00 app[web.1]: return self._save(name, content) 2017-08-23T09:11:48.956780+00:00 app[web.1]: self.name = self.storage.save(name, content, max_length=self.field.max_length) 2017-08-23T09:11:48.956777+00:00 app[web.1]: return field.pre_save(obj, add=True) 2017-08-23T09:11:48.956789+00:00 app[web.1]: f, 2017-08-23T09:11:48.956778+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/fields/files.py", line 297, in pre_save 2017-08-23T09:11:48.956790+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/dropbox/dropbox.py", line 234, in request 2017-08-23T09:11:48.956790+00:00 app[web.1]: timeout=timeout) 2017-08-23T09:11:48.956791+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/dropbox/dropbox.py", line 325, in request_json_string_with_retry 2017-08-23T09:11:48.956788+00:00 app[web.1]: self.client.files_upload(content, self._full_path(name)) 2017-08-23T09:11:48.956788+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/dropbox/base.py", line 1267, in files_upload 2017-08-23T09:11:48.956792+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/dropbox/dropbox.py", line 369, in request_json_string 2017-08-23T09:11:48.956794+00:00 app[web.1]: TypeError: expected request_binary as binary type, got class 'django.core.files.uploadedfile.InMemoryUploadedFile'>

1
  • If you want help debugging, you should post the full traceback, not just the exception. Commented Aug 23, 2017 at 9:51

1 Answer 1

0

It looks like you may have hit a bug in the DropBoxStorage backend. See issue 378 for example. The issue has been fixed but there hasn't been a release since. You could try installing the master branch to see if it works.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.