Skip to content

MIMETYPE not correctly getting set when POSTing file from Python SDK #51

@dedlockdave

Description

@dedlockdave

Expected Behavior:

I can load a PDF file to shadow drive and mime type is correctly set to 'application/pdf' upon retrieval

Current Behaviour

When I fetch pdf content from file store the result cannot be displayed as the response has a text/plain mime type set and the browser is unable to render pdf binary data. I have verified the content loaded is expected data, pdf is valid, and pdf extension is set correctly when posting file. Still the pdf files do not receive the correct mime type when retrieving .
I believe this is due to ShadowFile not receiving correct mime type here:

pub fn file<T: AsRef<Path>>(name: String, path: T) -> Self {

Example - Reproduce

  1. I create a temp file and post the content with the given extension
async def upload_file(self, ext, content):
        temp_dir = tempfile.mkdtemp()
        file_name = f"{uuid.uuid4()}.{ext}"
        temp_file_path = os.path.join(temp_dir, file_name)

        try:
            if ext.lower() in ["pdf", "other_binary_extension"]:
                async with aiofiles.open(temp_file_path, "wb") as temp_file:
                    # import pdb; pdb.set_trace()
                    await temp_file.write(content)
                    urls = await run_async(self.client.upload_files, [temp_file_path])
                    return file_name, urls[0]
            else:
                print("nah wtf")
        finally:
            # Clean up the file and the directory when done using run_async
            await run_async(os.remove, temp_file_path)
            await run_async(os.rmdir, temp_dir)
  1. Validate the POSTed file from file store and writing file to local disk yields valid pdf file that was posted
    data = await sdrive_client.fetch_content("bc0b026f-1f31-4255-b03f-00192ce41dfc.pdf")
    async with aiofiles.open("firstaid2.pdf", "wb") as out_file:
    await out_file.write(data.getvalue())

  2. Fetching file fails to load the pdf and response header is set to text/plain:
    e.g.:
    https://shdw-drive.genesysgo.net/H4VgQ4i666aPQ69fA2wDoYXb4qs4dSBeUm4gmP2cQhjY/bc0b026f-1f31-4255-b03f-00192ce41dfc.pdf

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions