trouble with FileUploadParser configuration

433 views
Skip to first unread message

Pawel Jasinski

unread,
Jun 2, 2016, 2:54:44 PM6/2/16
to Django REST framework
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/#fileuploadparser
It 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

Pawel Jasinski

unread,
Jun 2, 2016, 4:15:08 PM6/2/16
to Django REST framework
removing filename from put parameter list did the trick

黄平

unread,
Jun 4, 2017, 2:20:43 AM6/4/17
to Django REST framework
Hi,I also have the problem.Have you solved?
Reply all
Reply to author
Forward
0 new messages