Uploaded image for project: 'Libcloud'
  1. Libcloud
  2. LIBCLOUD-725

Binary data storage in LocalStorageDriver fails on Py3

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Storage
    • Labels:
      None
    • Environment:

      LibCloud 0.17.0, Python 3.4

      Description

      LocalStorageDriver.upload_object_via_stream does not allow the upload of bytes in Python 3, despite the fact that download_object_as_stream returns a stream of bytes:

      >>> container.upload_object_via_stream(io.BytesIO(b'foobar'), 'key')
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        File
      "/home/torf/projects/coba/venv/lib/python3.4/site-packages/libcloud/storage/base.py",
      line 157, in upload_object_via_stream
          iterator, self, object_name, extra=extra, **kwargs)
        File
      "/home/torf/projects/coba/venv/lib/python3.4/site-packages/libcloud/storage/drivers/local.py",
      line 497, in upload_object_via_stream
          obj_file.close()
        File
      "/home/torf/projects/coba/venv/lib/python3.4/site-packages/libcloud/storage/drivers/local.py",
      line 69, in __exit__
          raise value
        File
      "/home/torf/projects/coba/venv/lib/python3.4/site-packages/libcloud/storage/drivers/local.py",
      line 495, in upload_object_via_stream
          obj_file.write(data)
      TypeError: must be str, not bytes
      

      The problem is that LocalStorageDriver opens the target file for writing in text mode ('w') instead of binary mode ('wb').

      As discussed on the users mailing list I am working on a pull request for this issue.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              torf torf
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: