[Fixed]-How to convert content of InMemoryUploadedFile to string


Try str(uploaded_file.read()) to convert InMemoryUploadedFile to str

uploaded_file = request.FILES['file']
print(type(uploaded_file))  # <class 'django.core.files.uploadedfile.InMemoryUploadedFile'>
print(type(uploaded_file.read()))  # <class 'bytes'>
print(type(str(uploaded_file.read())))  # <class 'str'>

Assuming you are uploading a text file (.txt,.json etc) as below,

my text line 1
my text line 2
my text line 3

then your view be like,

def my_view(request):
    uploaded_file = request.FILES['file']
    str_text = ''
    for line in uploaded_file:
        str_text = str_text + line.decode()  # "str_text" will be of `str` type
    # do something
    return something


file_in_memory -> InMemoryUploadedFile

file_in_memory.read().decode() -> txt output


If you want to read file data as a list, then you can try out the following code:

uploaded_file = request.FILES['file'] 
file_data = uploaded_file.read().decode().splitlines()  # get each line data as list item

Leave a comment