7

I am working on a web application using Flask. One of the views is supposed to accept uploaded files through PUT requests, however I only can get POST requests with $ curl -F upload=@filename URL to work properly. With PUT requests such as $ curl --upload-file filenname URL the request.files ImmutableMultiDict is empty. Am I missing something in Flask or maybe with using curl?

1
  • I don't think this question should have been marked as a duplicate. This question is specifically about using HTTP PUT with Flask to upload files. The linked question is about getting data from HTTP POST/GET requests. Neither the linked question nor any of its current answers talks about HTTP PUT. Not sure if there's a process for getting it unmarked as a duplicate. Commented Jan 23, 2024 at 19:36

1 Answer 1

8

PUT request is way different compared to POST request. With PUT request the file contents can be accessed using either request.data or request.stream. The first one stores incoming data as string, while request.stream acts more like a file object, making it more suitable for binary data:

with open('uploaded_image.jpg', 'w') as f:
    f.write(request.stream.read())
Sign up to request clarification or add additional context in comments.

1 Comment

Yes my file ended up in request.data because Flask cannot handle its mime type.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.