user123
user123

Reputation: 73

TypeError: expected str, bytes or os.PathLike object, not FileStorage keeps popping up

def convertToBinaryData(filename):
    # Convert digital data to binary format
    with open(filename, 'rb') as file:
        binaryData = file.read()
    return binaryData

This is my function for converting an image to binary...

uploaded_file = request.files['file']
if uploaded_file.filename != '':
    uploaded_file.save(uploaded_file.filename)
    empPicture = convertToBinaryData(uploaded_file)

and this is the block of code where the uploaded file is received and saved, however, when it runs, I get this error...

    with open(filename, 'rb') as file:
TypeError: expected str, bytes or os.PathLike object, not FileStorage

I'm pretty new to python and I've been stuck on this for a while, any help would be appreciated. Thanks in advance

Upvotes: 5

Views: 14575

Answers (2)

Barmar
Barmar

Reputation: 780974

uploaded_file is not a filename, it's a Flask FileStorage object. You can read from this directly, you don't need to call open().

So just do:

empPicture = uploaded_file.read()

See Read file data without saving it in Flask

Upvotes: 5

AKHacks
AKHacks

Reputation: 207

while calling 'convertToBinaryData' you are passing 'uploaded_file' which is not a filename but and object.

You need to pass the filename (with correct path if saved in custom location) to your 'convertToBinaryData' funciton.

Something like this:

convertToBinaryData(uploaded_file.filename)

Upvotes: 4

Related Questions