Skip to content

Uploading Multipart files #74

@guneysus

Description

@guneysus

I can not upload files with restless.
It raises exception before my Resource's def create(*args ,**kwargs) method and seems to serialize file content as json.
I am using httpie for testing uploads from CLI.

https://github.com/jkbrzt/httpie#file-upload-forms

blog git:(master) ✗ http -f POST :8888/api/snippets file@test.txt -p Hh 
POST /api/snippets HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, compress
Content-Length: 188
Content-Type: multipart/form-data; boundary=35eaef06eea1424184e438ce4d907ed3
Host: localhost:8888
User-Agent: HTTPie/0.8.0

HTTP/1.1 500 Internal Server Error
Content-Encoding: gzip
Content-Length: 1130
Content-Type: application/json; charset=UTF-8
Date: Fri, 11 Mar 2016 13:24:44 GMT
Server: TornadoServer/4.3
Vary: Accept-Encoding

Traceback

Traceback (most recent call last):
  File "/home/ahmed/opt/pycharm-5.0.4/helpers/pydev/pydevd.py", line 2411, in <module>
    globals = debugger.run(setup['file'], None, None, is_module)
  File "/home/ahmed/opt/pycharm-5.0.4/helpers/pydev/pydevd.py", line 1802, in run
    launch(file, globals, locals)  # execute the script
  File "/home/ahmed/PycharmProjects/blog/application.py", line 55, in <module>
    main()
  File "/home/ahmed/PycharmProjects/blog/application.py", line 50, in main
    tornado.ioloop.IOLoop.current().start()
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/ioloop.py", line 883, in start
    handler_func(fd_obj, events)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/stack_context.py", line 275, in null_wrapper
    return fn(*args, **kwargs)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/netutil.py", line 274, in accept_handler
    callback(connection, address)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/tcpserver.py", line 269, in _handle_connection
    future = self.handle_stream(stream, address)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/httpserver.py", line 180, in handle_stream
    conn.start_serving(self)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/http1connection.py", line 693, in start_serving
    self._serving_future = self._server_request_loop(delegate)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/gen.py", line 282, in wrapper
    yielded = next(result)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/http1connection.py", line 706, in _server_request_loop
    ret = yield conn.read_response(request_delegate)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/http1connection.py", line 151, in read_response
    return self._read_message(delegate)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/gen.py", line 294, in wrapper
    Runner(result, future, yielded)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/gen.py", line 956, in __init__
    self.run()
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/gen.py", line 1017, in run
    yielded = self.gen.send(value)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/http1connection.py", line 238, in _read_message
    delegate.finish()
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/httpserver.py", line 291, in finish
    self.delegate.finish()
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/web.py", line 2022, in finish
    self.execute()
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/web.py", line 2055, in execute
    **self.path_kwargs)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/gen.py", line 282, in wrapper
    yielded = next(result)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/web.py", line 1443, in _execute
    result = method(*self.path_args, **self.path_kwargs)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/gen.py", line 282, in wrapper
    yielded = next(result)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/restless/tnd.py", line 40, in _method
    yield self.resource_handler.handle(self.__resource_view_type__, *args, **kwargs)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/tornado/gen.py", line 282, in wrapper
    yielded = next(result)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/restless/tnd.py", line 168, in handle
    raise gen.Return(self.handle_error(err))
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/restless/resources.py", line 315, in handle_error
    return self.build_error(err)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/restless/tnd.py", line 160, in handle
    self.data = self.deserialize(method, endpoint, self.request_body())
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/restless/resources.py", line 337, in deserialize
    return self.deserialize_list(body)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/restless/resources.py", line 351, in deserialize_list
    return self.serializer.deserialize(body)
  File "/home/ahmed/PycharmProjects/blog/venv/local/lib/python2.7/site-packages/restless/serializers.py", line 62, in deserialize
    return json.loads(body.decode('utf-8'))
  File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded", "error": "No JSON object could be decoded"}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions