Hi,
I suspect it is some configuration problem on my side, but I can not figure it out.
I am trying to use the raw file upload as described here
http://www.django-rest-framework.org/api-guide/parsers/#fileuploadparserIt appears as if FileUploadParser did not exist.
The test:
curl -v -u user:pass
http://d2:8000/uploadapp/uploadfile --upload-file 1.jpg --header "Content-Disposition: attachment; filename=1.jpg" --header "Content-type: application/jpeg"
The exception:
Internal Server Error: /uploadapp/uploadfile
Traceback (most recent call last):
File "/opt/venv/p3-django/lib/python3.4/site-packages/django/core/handlers/base.py", line 149, in get_response
response = self.process_exception_by_middleware(e, request)
File "/opt/venv/p3-django/lib/python3.4/site-packages/django/core/handlers/base.py", line 147, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/venv/p3-django/lib/python3.4/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
return view_func(*args, **kwargs)
File "/opt/venv/p3-django/lib/python3.4/site-packages/django/views/generic/base.py", line 68, in view
return self.dispatch(request, *args, **kwargs)
File "/opt/venv/p3-django/lib/python3.4/site-packages/rest_framework/views.py", line 468, in dispatch
response = self.handle_exception(exc)
File "/opt/venv/p3-django/lib/python3.4/site-packages/rest_framework/views.py", line 465, in dispatch
response = handler(request, *args, **kwargs)
TypeError: put() missing 1 required positional argument: 'filename'
[01/Jun/2016 02:57:58] "PUT /uploadapp/uploadfile HTTP/1.1" 500 74097
The output of curl:
* Connected to d2 (172.16.175.16) port 8000 (#0)
* Server auth using Basic with user 'rejap'
> PUT /uploadapp/uploadfile HTTP/1.1
> Authorization: Basic xxxxx
> User-Agent: curl/7.35.0
> Host: d2:8000
> Accept: */*
> Content-Disposition: attachment; filename=upload.jpg
> Content-type: application/jpeg
> Content-Length: 2735263
> Expect: 100-continue
>
* HTTP 1.0, assume close after body
< HTTP/1.0 500 Internal Server Error
< Date: Wed, 01 Jun 2016 02:57:58 GMT
< Server: WSGIServer/0.2 CPython/3.4.3
< Content-Type: text/html
< Vary: Cookie
< X-Frame-Options: SAMEORIGIN
<
the url.py of my app:
urlpatterns = [
url(r'^uploadfile$', FileUploadView.as_view(), name='upload-raw-file'),
]
the view of my app:
class FileUploadView(APIView):
parser_classes = (FileUploadParser,)
def put(self, request, filename, format=None):
file_obj = request.data['file']
# ...
# do some stuff with uploaded file
# ...
return Response(status=204)
--pawel