Uploading Files#

Uploading attachments is a two-step workflow: create an Attachment, then create an attachment entry on the target page. The examples below assume you already have a page object.

Create an Attachment#

Build an Attachment from a binary file handle:

from labapi import Attachment

with open("my_file.txt", "rb") as f:
    attachment = Attachment.from_file(f)

Note

from_file() requires a seekable binary file object. Standard file handles opened with "rb" or "rb+" work well.

If the MIME type cannot be determined from the filename, labapi falls back to application/octet-stream.

Upload the Attachment#

Create an AttachmentEntry on the target page:

from labapi import AttachmentEntry

attachment_entry = page.entries.create(AttachmentEntry, attachment)

How Uploaded Files Appear#

LabArchives displays uploaded files differently depending on their type:

  • Images are shown inline with their caption beneath the image.

  • PDFs are shown with a preview thumbnail and download link.

  • Other file types are shown as downloadable links with an icon and caption.

Set a Custom Caption#

If you want a specific caption, construct the Attachment manually:

from labapi import Attachment, AttachmentEntry

with open("experiment_results.png", "rb") as f:
    attachment = Attachment(
        backing=f,
        mime_type="image/png",
        filename="experiment_results.png",
        caption="Figure 1: Temperature vs. reaction rate at different pH levels",
    )

    figure_entry = page.entries.create(AttachmentEntry, attachment)