Here is an example to use Parser: MultiPartParser to parse the media type: multipart/form-data. You also can take a look at this for more in detail:
http://www.django-rest-framework.org/api-guide/parsers
Client Side via curl:
( Basically you can use either PUT or POST)
Command format:
curl -X PUT -H 'Content-Type
:multipart/form-data' -F 'data=@/{your_file}' -u {account}
:{password} http
://{your server
ip address
}/
for instance:
curl -X PUT -H 'Content-Type
:multipart/form-data' -F '
data=@/Users/administrator/Desktop/2015.12.01
.yaml' -
u danny:password http://192.168.1.100:8000/api/upload_func/file/
Server side
( Django REST Framework
)
in your settings
.py, add the following lines
==>
'DEFAULT_PARSER_CLASSES': (
'rest_framework
.parsers
.MultiPartParser',
)
For your_api
.py, you can refer to this example as below:
class UploadAction
(APIView):
permission_classes = (IsAuthenticated, IsAdminOrReadOnly)
parser_classes = (
MultiPartParser,)
def put
(self, request, format=None):
try:
# Read uploaded files
my_file = request
.FILES
['
data']
filename = "/tmp/" +
str(my_file)
with open
(filename, 'wb+') as temp_file:
for chunk in my_file
.chunks
():
temp_file
.write
(chunk)
temp_file
.close
()
except Exception as e:
return Response
(status=status
.HTTP_500_INTERNAL_SERVER_ERROR)
return Response
(status=status
.HTTP_201_CREATED)
P.S: Please change 'data' to others if you put the different variable name in curl command!!
Reference:
http://stackoverflow.com/questions/21012538/retrieve-json-from-request-files-in-django-without-writing-to-file
If you want to get the content of uploaded file, you can directly use the.
read()
api.
Something like:
if request.FILES.has_key('data'):
file = request.Files['data']
data = file.read()
#you have file contents in data
No comments:
Post a Comment