[{"data":1,"prerenderedAt":1674},["ShallowReactive",2],{"navigation_docs":3,"-mime-types-multipart-form-data":673,"-mime-types-multipart-form-data-surround":1647,"mdc--u4twy0-key":1648,"mdc--ouwdel-key":1658},[4,29,123,155,193,222,251,267,408,416,456,462,468],{"title":5,"path":6,"stem":7,"children":8,"icon":28},"Getting Started","\u002Fgetting-started","01.getting-started\u002F1.index",[9,13,18,23],{"title":10,"path":6,"stem":7,"icon":11,"exact":12},"What is Poly?","i-lucide-house",true,{"title":14,"path":15,"stem":16,"icon":17},"Installation","\u002Fgetting-started\u002Finstallation","01.getting-started\u002F2.installation","i-lucide-download",{"title":19,"path":20,"stem":21,"icon":22},"Quickstart","\u002Fgetting-started\u002Fquickstart","01.getting-started\u002F3.quickstart","i-lucide-rocket",{"title":24,"path":25,"stem":26,"icon":27},"Migrate to Poly","\u002Fgetting-started\u002Fmigrate-to-poly","01.getting-started\u002F4.migrate-to-poly","i-lucide-replace",false,{"title":30,"path":31,"stem":32,"children":33,"icon":28},"File Browser","\u002Ffile-browser","02.file-browser\u002F01.index",[34,37,42,47,52,57,62,67,72,113,118],{"title":35,"path":31,"stem":32,"icon":36,"exact":12},"Overview","i-lucide-folder-open",{"title":38,"path":39,"stem":40,"icon":41},"Uploading Files","\u002Ffile-browser\u002Fuploading-your-files","02.file-browser\u002F02.uploading-your-files","i-lucide-upload",{"title":43,"path":44,"stem":45,"icon":46},"Navigating Your Files","\u002Ffile-browser\u002Fnavigating-your-files","02.file-browser\u002F03.navigating-your-files","i-lucide-map",{"title":48,"path":49,"stem":50,"icon":51},"Sidebar","\u002Ffile-browser\u002Fsidebar","02.file-browser\u002F04.sidebar","i-lucide-panel-left",{"title":53,"path":54,"stem":55,"icon":56},"Saved Searches","\u002Ffile-browser\u002Fsaved-searches","02.file-browser\u002F05.saved-searches","i-lucide-folder-search",{"title":58,"path":59,"stem":60,"icon":61},"Supported File Types","\u002Ffile-browser\u002Fsupported-file-types","02.file-browser\u002F06.supported-file-types","i-lucide-file",{"title":63,"path":64,"stem":65,"icon":66},"View Modes","\u002Ffile-browser\u002Fview-modes","02.file-browser\u002F07.view-modes","i-lucide-layout-grid",{"title":68,"path":69,"stem":70,"icon":71},"Quick View (Peek)","\u002Ffile-browser\u002Fquick-view","02.file-browser\u002F08.quick-view","i-lucide-eye",{"title":73,"path":74,"stem":75,"children":76,"icon":78},"Tools Menu","\u002Ffile-browser\u002Ftools-menu","02.file-browser\u002F09.tools-menu\u002F1.index",[77,79,84,89,94,99,104,108],{"title":73,"path":74,"stem":75,"icon":78,"exact":12},"i-lucide-wrench",{"title":80,"path":81,"stem":82,"icon":83},"Agent","\u002Ffile-browser\u002Ftools-menu\u002Fagent","02.file-browser\u002F09.tools-menu\u002F2.agent","i-lucide-bot",{"title":85,"path":86,"stem":87,"icon":88},"Chats","\u002Ffile-browser\u002Ftools-menu\u002Fchats","02.file-browser\u002F09.tools-menu\u002F3.chats","i-lucide-message-square",{"title":90,"path":91,"stem":92,"icon":93},"Outline","\u002Ffile-browser\u002Ftools-menu\u002Foutline","02.file-browser\u002F09.tools-menu\u002F4.outline","i-lucide-list",{"title":95,"path":96,"stem":97,"icon":98},"Details Panel","\u002Ffile-browser\u002Ftools-menu\u002Fdetails","02.file-browser\u002F09.tools-menu\u002F5.details","i-lucide-panel-right",{"title":100,"path":101,"stem":102,"icon":103},"Activity","\u002Ffile-browser\u002Ftools-menu\u002Factivity","02.file-browser\u002F09.tools-menu\u002F6.activity","i-lucide-activity",{"title":105,"path":106,"stem":107,"icon":66},"Waterfall","\u002Ffile-browser\u002Ftools-menu\u002Fwaterfall","02.file-browser\u002F09.tools-menu\u002F7.waterfall",{"title":109,"path":110,"stem":111,"icon":112},"Flashback","\u002Ffile-browser\u002Ftools-menu\u002Fflashback","02.file-browser\u002F09.tools-menu\u002F8.flashback","i-lucide-zap",{"title":114,"path":115,"stem":116,"icon":117},"Keyboard Shortcuts","\u002Ffile-browser\u002Fkeyboard-shortcuts","02.file-browser\u002F10.keyboard-shortcuts","i-lucide-keyboard",{"title":119,"path":120,"stem":121,"icon":122},"Offline Use","\u002Ffile-browser\u002Foffline-use","02.file-browser\u002F11.offline-use","i-lucide-wifi-off",{"title":124,"path":125,"stem":126,"children":127,"icon":28},"Searching","\u002Fsearching","03.searching\u002F1.index",[128,130,135,140,145,150],{"title":35,"path":125,"stem":126,"icon":129,"exact":12},"i-lucide-search",{"title":131,"path":132,"stem":133,"icon":134},"Text Queries","\u002Fsearching\u002Ftext-queries","03.searching\u002F2.text-queries","i-lucide-text-search",{"title":136,"path":137,"stem":138,"icon":139},"Searching by File","\u002Fsearching\u002Fsearching-by-file","03.searching\u002F3.searching-by-file","i-lucide-scan-search",{"title":141,"path":142,"stem":143,"icon":144},"Searching by File Part","\u002Fsearching\u002Fsearching-by-file-part","03.searching\u002F4.searching-by-file-part","i-lucide-crop",{"title":146,"path":147,"stem":148,"icon":149},"Searching by Color","\u002Fsearching\u002Fsearching-by-color","03.searching\u002F5.searching-by-color","i-lucide-palette",{"title":151,"path":152,"stem":153,"icon":154},"Faceted Search & Advanced Search","\u002Fsearching\u002Ffaceted-search","03.searching\u002F6.faceted-search","i-lucide-filter",{"title":156,"path":157,"stem":158,"children":159,"icon":28},"Desktop","\u002Fdesktop","04.desktop\u002F1.index",[160,163,168,173,178,183,188],{"title":161,"path":157,"stem":158,"icon":162,"exact":12},"Intro","i-lucide-monitor",{"title":164,"path":165,"stem":166,"icon":167},"Sync Folder","\u002Fdesktop\u002Fsync-folder","04.desktop\u002F2.sync-folder","i-lucide-folder-sync",{"title":169,"path":170,"stem":171,"icon":172},"CLI","\u002Fdesktop\u002Fcli","04.desktop\u002F3.cli","i-lucide-square-terminal",{"title":174,"path":175,"stem":176,"icon":177},"Tags & Colors","\u002Fdesktop\u002Ftags-and-colors","04.desktop\u002F4.tags-and-colors","i-lucide-tags",{"title":179,"path":180,"stem":181,"icon":182},"Bookmarks","\u002Fdesktop\u002Fbookmarks","04.desktop\u002F5.bookmarks","i-lucide-bookmark",{"title":184,"path":185,"stem":186,"icon":187},"Spotlight & Handoff","\u002Fdesktop\u002Fspotlight-and-handoff","04.desktop\u002F6.spotlight-and-handoff","i-lucide-sparkles",{"title":189,"path":190,"stem":191,"icon":192},"Differences from Web","\u002Fdesktop\u002Fdifferences-from-web","04.desktop\u002F7.differences-from-web","i-lucide-app-window",{"title":80,"path":194,"stem":195,"children":196,"icon":28,"defaultOpen":28},"\u002Fagent","05.agent\u002F1.index",[197,198,203,207,212,217],{"title":35,"path":194,"stem":195,"icon":83,"exact":12},{"title":199,"path":200,"stem":201,"icon":202},"Reading & Summarizing Files","\u002Fagent\u002Freading-and-summarizing","05.agent\u002F2.reading-and-summarizing","i-lucide-book-open",{"title":204,"path":205,"stem":206,"icon":129},"AI-Powered Searching","\u002Fagent\u002Fsearching","05.agent\u002F3.searching",{"title":208,"path":209,"stem":210,"icon":211},"Creating and Editing Files","\u002Fagent\u002Fcreating-and-editing-files","05.agent\u002F4.creating-and-editing-files","i-lucide-file-pen",{"title":213,"path":214,"stem":215,"icon":216},"Organizing Files","\u002Fagent\u002Forganizing-files","05.agent\u002F5.organizing-files","i-lucide-folder-symlink",{"title":218,"path":219,"stem":220,"icon":221},"Complex, Multi-Step Tasks","\u002Fagent\u002Fcomplex-tasks","05.agent\u002F6.complex-tasks","i-lucide-workflow",{"title":223,"path":224,"stem":225,"children":226,"icon":28,"defaultOpen":28},"Recovering Files","\u002Frecovering-files","06.recovering-files\u002F1.index",[227,229,233,236,241,246],{"title":35,"path":224,"stem":225,"icon":228,"exact":12},"i-lucide-history",{"title":230,"path":231,"stem":232,"icon":71},"Viewing Versions","\u002Frecovering-files\u002Fviewing-versions","06.recovering-files\u002F2.viewing-versions",{"title":109,"path":234,"stem":235,"icon":112},"\u002Frecovering-files\u002Fflashback","06.recovering-files\u002F3.flashback",{"title":237,"path":238,"stem":239,"icon":240},"Restoring Versions","\u002Frecovering-files\u002Frestoring-versions","06.recovering-files\u002F4.restoring-versions","i-lucide-rotate-ccw",{"title":242,"path":243,"stem":244,"icon":245},"Reverting Changes","\u002Frecovering-files\u002Freverting-changes","06.recovering-files\u002F5.reverting-changes","i-lucide-undo-2",{"title":247,"path":248,"stem":249,"icon":250},"Limitations","\u002Frecovering-files\u002Flimitations","06.recovering-files\u002F6.limitations","i-lucide-triangle-alert",{"title":252,"path":253,"stem":254,"children":255,"icon":28,"defaultOpen":28},"Sharing","\u002Fsharing","07.sharing\u002F1.index",[256,258,262],{"title":35,"path":253,"stem":254,"icon":257,"exact":12},"i-lucide-share-2",{"title":259,"path":260,"stem":261,"icon":257},"Sharing Files","\u002Fsharing\u002Fsharing-files","07.sharing\u002F2.sharing-files",{"title":263,"path":264,"stem":265,"icon":266},"Shared Drives","\u002Fsharing\u002Fshared-drives","07.sharing\u002F3.shared-drives","i-lucide-users",{"title":169,"path":268,"stem":269,"children":270,"icon":28,"defaultOpen":28},"\u002Fcli","08.cli\u002F1.index",[271,273,278,399,404],{"title":14,"path":268,"stem":269,"icon":272,"exact":12},"i-lucide-terminal",{"title":274,"path":275,"stem":276,"icon":277},"How it Works","\u002Fcli\u002Fhow-it-works","08.cli\u002F2.how-it-works","i-lucide-cog",{"title":279,"path":280,"stem":281,"children":282,"icon":284},"Commands","\u002Fcli\u002Fcommands","08.cli\u002F3.commands\u002F01.index",[283,285,289,293,297,302,307,312,317,322,327,332,337,342,347,351,356,360,365,369,373,377,382,386,390,394],{"title":279,"path":280,"stem":281,"icon":284,"exact":12},"i-lucide-list-tree",{"title":286,"path":287,"stem":288,"icon":93},"ls","\u002Fcli\u002Fcommands\u002Fls","08.cli\u002F3.commands\u002F02.ls",{"title":290,"path":291,"stem":292,"icon":56},"find","\u002Fcli\u002Fcommands\u002Ffind","08.cli\u002F3.commands\u002F03.find",{"title":294,"path":295,"stem":296,"icon":129},"search","\u002Fcli\u002Fcommands\u002Fsearch","08.cli\u002F3.commands\u002F04.search",{"title":298,"path":299,"stem":300,"icon":301},"cp","\u002Fcli\u002Fcommands\u002Fcp","08.cli\u002F3.commands\u002F05.cp","i-lucide-copy",{"title":303,"path":304,"stem":305,"icon":306},"mv","\u002Fcli\u002Fcommands\u002Fmv","08.cli\u002F3.commands\u002F06.mv","i-lucide-move",{"title":308,"path":309,"stem":310,"icon":311},"rm","\u002Fcli\u002Fcommands\u002Frm","08.cli\u002F3.commands\u002F07.rm","i-lucide-trash-2",{"title":313,"path":314,"stem":315,"icon":316},"mkdir","\u002Fcli\u002Fcommands\u002Fmkdir","08.cli\u002F3.commands\u002F08.mkdir","i-lucide-folder-plus",{"title":318,"path":319,"stem":320,"icon":321},"mkurl","\u002Fcli\u002Fcommands\u002Fmkurl","08.cli\u002F3.commands\u002F09.mkurl","i-lucide-link",{"title":323,"path":324,"stem":325,"icon":326},"mksearch","\u002Fcli\u002Fcommands\u002Fmksearch","08.cli\u002F3.commands\u002F10.mksearch","i-lucide-search-code",{"title":328,"path":329,"stem":330,"icon":331},"mkdrive","\u002Fcli\u002Fcommands\u002Fmkdrive","08.cli\u002F3.commands\u002F11.mkdrive","i-lucide-hard-drive",{"title":333,"path":334,"stem":335,"icon":336},"rmdrive","\u002Fcli\u002Fcommands\u002Frmdrive","08.cli\u002F3.commands\u002F12.rmdrive","i-lucide-trash",{"title":338,"path":339,"stem":340,"icon":341},"wget","\u002Fcli\u002Fcommands\u002Fwget","08.cli\u002F3.commands\u002F13.wget","i-lucide-cloud-download",{"title":343,"path":344,"stem":345,"icon":346},"file show","\u002Fcli\u002Fcommands\u002Ffile-show","08.cli\u002F3.commands\u002F14.file-show","i-lucide-info",{"title":348,"path":349,"stem":350,"icon":202},"file read","\u002Fcli\u002Fcommands\u002Ffile-read","08.cli\u002F3.commands\u002F15.file-read",{"title":352,"path":353,"stem":354,"icon":355},"file write","\u002Fcli\u002Fcommands\u002Ffile-write","08.cli\u002F3.commands\u002F16.file-write","i-lucide-pencil",{"title":357,"path":358,"stem":359,"icon":211},"file update","\u002Fcli\u002Fcommands\u002Ffile-update","08.cli\u002F3.commands\u002F17.file-update",{"title":361,"path":362,"stem":363,"icon":364},"file search","\u002Fcli\u002Fcommands\u002Ffile-search","08.cli\u002F3.commands\u002F18.file-search","i-lucide-file-search",{"title":366,"path":367,"stem":368,"icon":228},"file history","\u002Fcli\u002Fcommands\u002Ffile-history","08.cli\u002F3.commands\u002F19.file-history",{"title":370,"path":371,"stem":372,"icon":240},"file restore","\u002Fcli\u002Fcommands\u002Ffile-restore","08.cli\u002F3.commands\u002F20.file-restore",{"title":374,"path":375,"stem":376,"icon":245},"file revert","\u002Fcli\u002Fcommands\u002Ffile-revert","08.cli\u002F3.commands\u002F21.file-revert",{"title":378,"path":379,"stem":380,"icon":381},"file open","\u002Fcli\u002Fcommands\u002Ffile-open","08.cli\u002F3.commands\u002F22.file-open","i-lucide-external-link",{"title":383,"path":384,"stem":385,"icon":17},"file download","\u002Fcli\u002Fcommands\u002Ffile-download","08.cli\u002F3.commands\u002F23.file-download",{"title":387,"path":388,"stem":389,"icon":257},"file share","\u002Fcli\u002Fcommands\u002Ffile-share","08.cli\u002F3.commands\u002F24.file-share",{"title":391,"path":392,"stem":393,"icon":192},"app","\u002Fcli\u002Fcommands\u002Fapp","08.cli\u002F3.commands\u002F25.app",{"title":395,"path":396,"stem":397,"icon":398},"auth","\u002Fcli\u002Fcommands\u002Fauth","08.cli\u002F3.commands\u002F26.auth","i-lucide-key-round",{"title":400,"path":401,"stem":402,"icon":403},"Global Flags","\u002Fcli\u002Fglobal-flags","08.cli\u002F4.global-flags","i-lucide-sliders-horizontal",{"title":405,"path":406,"stem":407,"icon":83},"Agent Skill","\u002Fcli\u002Fagent-skill","08.cli\u002F5.agent-skill",{"title":409,"path":410,"stem":411,"children":412,"icon":28,"defaultOpen":28},"Privacy & Security","\u002Fprivacy-and-security","09.privacy-and-security\u002F1.index",[413],{"title":414,"path":410,"stem":411,"icon":415,"exact":12},"Our Privacy Commitment","i-lucide-shield-check",{"title":417,"path":418,"stem":419,"children":420,"icon":28,"defaultOpen":28},"Integrations & MCP","\u002Fintegrations","10.integrations\u002F1.index",[421,423,428,433,438,442,447,452],{"title":35,"path":418,"stem":419,"icon":422,"exact":12},"i-lucide-plug",{"title":424,"path":425,"stem":426,"icon":427},"Claude Code","\u002Fintegrations\u002Fclaude-code","10.integrations\u002F2.claude-code","i-simple-icons-claude",{"title":429,"path":430,"stem":431,"icon":432},"Claude CoWork (Desktop)","\u002Fintegrations\u002Fclaude-cowork","10.integrations\u002F3.claude-cowork","i-simple-icons-anthropic",{"title":434,"path":435,"stem":436,"icon":437},"ChatGPT Work (Desktop)","\u002Fintegrations\u002Fchatgpt-work","10.integrations\u002F4.chatgpt-work","i-simple-icons-openai",{"title":439,"path":440,"stem":441,"icon":437},"ChatGPT","\u002Fintegrations\u002Fchatgpt","10.integrations\u002F5.chatgpt",{"title":443,"path":444,"stem":445,"icon":446},"Gemini","\u002Fintegrations\u002Fgemini","10.integrations\u002F6.gemini","i-simple-icons-googlegemini",{"title":448,"path":449,"stem":450,"icon":451},"VS Code & Cursor","\u002Fintegrations\u002Fvscode-cursor","10.integrations\u002F7.vscode-cursor","i-simple-icons-visualstudiocode",{"title":453,"path":454,"stem":455,"icon":78},"Using MCP","\u002Fintegrations\u002Fusing-mcp","10.integrations\u002F8.using-mcp",{"title":457,"path":458,"stem":459,"children":460,"icon":28,"defaultOpen":28},"Troubleshooting","\u002Ftroubleshooting","11.troubleshooting\u002F1.index",[461],{"title":457,"path":458,"stem":459,"icon":78,"exact":12},{"title":463,"path":464,"stem":465,"children":466,"icon":28,"defaultOpen":28},"Roadmap","\u002Froadmap","12.roadmap\u002F1.index",[467],{"title":463,"path":464,"stem":465,"icon":46,"exact":12},{"title":469,"icon":28,"defaultOpen":28,"path":470,"stem":471,"children":472,"page":28},"Releases","\u002Freleases","13.releases",[473,477],{"title":474,"path":475,"stem":476},"Latest","\u002Freleases\u002Fall-releases\u002F2026-09-01-v0-beta-09-01","13.releases\u002F1.latest",{"title":478,"icon":28,"defaultOpen":28,"path":479,"stem":480,"children":481,"page":28},"All releases","\u002Freleases\u002Fall-releases","13.releases\u002F2.all-releases",[482,489,497,505,513,521,529,537,545,553,561,569,577,585,593,601,609,617,625,633,641,649,657,665],{"title":483,"path":475,"stem":484,"release-notes":485},"v0.beta.2026.09.01","13.releases\u002F2.all-releases\u002F2026-09-01-v0-beta-09-01",{"date":486,"banner":487,"icon":488,"version":483},"2026-09-01","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2026-09-01\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2026-09-01\u002Fsticker.png",{"title":490,"path":491,"stem":492,"release-notes":493},"v0.beta.2026.08.27","\u002Freleases\u002Fall-releases\u002F2026-08-27-v0-beta-08-27","13.releases\u002F2.all-releases\u002F2026-08-27-v0-beta-08-27",{"date":494,"banner":495,"icon":496,"version":490},"2026-08-27","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2026-08-27\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2026-08-27\u002Ficon.png",{"title":498,"path":499,"stem":500,"release-notes":501},"v0.beta.2026.08.18","\u002Freleases\u002Fall-releases\u002F2026-08-18-v0-beta-08-18","13.releases\u002F2.all-releases\u002F2026-08-18-v0-beta-08-18",{"date":502,"banner":503,"icon":504,"version":498},"2026-08-18","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2026-08-18\u002Fbanner.png","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2026-08-18\u002Fsticker.png",{"title":506,"path":507,"stem":508,"release-notes":509},"v0.beta.2026.08.11","\u002Freleases\u002Fall-releases\u002F2026-08-11-v0-beta-08-11","13.releases\u002F2.all-releases\u002F2026-08-11-v0-beta-08-11",{"date":510,"banner":511,"icon":512,"version":506},"2026-08-11","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2026-08-11\u002Fbanner.png","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2026-08-11\u002FUnknown-12.png",{"title":514,"path":515,"stem":516,"release-notes":517},"v0.beta.2026.01.22","\u002Freleases\u002Fall-releases\u002F2026-01-22-v0-beta-01-22","13.releases\u002F2.all-releases\u002F2026-01-22-v0-beta-01-22",{"date":518,"banner":519,"icon":520,"version":514},"2026-01-22","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2026-01-22\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2026-01-22\u002Ficon.webp",{"title":522,"path":523,"stem":524,"release-notes":525},"v0.beta.2026.01.13","\u002Freleases\u002Fall-releases\u002F2026-01-13-v0-beta-01-13","13.releases\u002F2.all-releases\u002F2026-01-13-v0-beta-01-13",{"date":526,"banner":527,"icon":528,"version":522},"2026-01-13","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2026-01-13\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2026-01-13\u002Ficon.webp",{"title":530,"path":531,"stem":532,"release-notes":533},"v0.beta.2026.01.09","\u002Freleases\u002Fall-releases\u002F2026-01-09-v0-beta-01-09","13.releases\u002F2.all-releases\u002F2026-01-09-v0-beta-01-09",{"date":534,"banner":535,"icon":536,"version":530},"2026-01-09","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2026-01-09\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2026-01-09\u002Ficon.webp",{"title":538,"path":539,"stem":540,"release-notes":541},"v0.beta.2025.12.31","\u002Freleases\u002Fall-releases\u002F2025-12-31-v0-beta-12-31","13.releases\u002F2.all-releases\u002F2025-12-31-v0-beta-12-31",{"date":542,"banner":543,"icon":544,"version":538},"2025-12-31","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-12-31\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-12-31\u002Ficon.webp",{"title":546,"path":547,"stem":548,"release-notes":549},"v0.beta.2025.12.26","\u002Freleases\u002Fall-releases\u002F2025-12-26-v0-beta-12-26","13.releases\u002F2.all-releases\u002F2025-12-26-v0-beta-12-26",{"date":550,"banner":551,"icon":552,"version":546},"2025-12-26","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-12-26\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-12-26\u002Ficon.webp",{"title":554,"path":555,"stem":556,"release-notes":557},"v0.beta.2025.12.16","\u002Freleases\u002Fall-releases\u002F2025-12-16-v0-beta-12-16","13.releases\u002F2.all-releases\u002F2025-12-16-v0-beta-12-16",{"date":558,"banner":559,"icon":560,"version":554},"2025-12-16","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-12-16\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-12-16\u002Ficon.webp",{"title":562,"path":563,"stem":564,"release-notes":565},"v0.beta.2025.12.12","\u002Freleases\u002Fall-releases\u002F2025-12-12-v0-beta-12-12","13.releases\u002F2.all-releases\u002F2025-12-12-v0-beta-12-12",{"date":566,"banner":567,"icon":568,"version":562},"2025-12-12","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-12-12\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-12-12\u002Ficon.webp",{"title":570,"path":571,"stem":572,"release-notes":573},"v0.beta.2025.12.03","\u002Freleases\u002Fall-releases\u002F2025-12-03-v0-beta-12-03","13.releases\u002F2.all-releases\u002F2025-12-03-v0-beta-12-03",{"date":574,"banner":575,"icon":576,"version":570},"2025-12-03","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-12-03\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-12-03\u002Ficon.webp",{"title":578,"path":579,"stem":580,"release-notes":581},"v0.beta.2025.11.26","\u002Freleases\u002Fall-releases\u002F2025-11-26-v0-beta-11-26","13.releases\u002F2.all-releases\u002F2025-11-26-v0-beta-11-26",{"date":582,"banner":583,"icon":584,"version":578},"2025-11-26","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-11-26\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-11-26\u002Ficon.webp",{"title":586,"path":587,"stem":588,"release-notes":589},"v0.beta.2025.11.19","\u002Freleases\u002Fall-releases\u002F2025-11-19-v0-beta-11-19","13.releases\u002F2.all-releases\u002F2025-11-19-v0-beta-11-19",{"date":590,"banner":591,"icon":592,"version":586},"2025-11-19","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-11-19\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-11-19\u002Ficon.webp",{"title":594,"path":595,"stem":596,"release-notes":597},"v0.beta.2025.11.13","\u002Freleases\u002Fall-releases\u002F2025-11-13-v0-beta-11-13","13.releases\u002F2.all-releases\u002F2025-11-13-v0-beta-11-13",{"date":598,"banner":599,"icon":600,"version":594},"2025-11-13","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-11-13\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-11-13\u002Ficon.webp",{"title":602,"path":603,"stem":604,"release-notes":605},"v0.beta.2025.11.05","\u002Freleases\u002Fall-releases\u002F2025-11-05-v0-beta-11-05","13.releases\u002F2.all-releases\u002F2025-11-05-v0-beta-11-05",{"date":606,"banner":607,"icon":608,"version":602},"2025-11-05","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-11-05\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-11-05\u002Ficon.webp",{"title":610,"path":611,"stem":612,"release-notes":613},"v0.beta.2025.10.29","\u002Freleases\u002Fall-releases\u002F2025-10-29-v0-beta-10-29","13.releases\u002F2.all-releases\u002F2025-10-29-v0-beta-10-29",{"date":614,"banner":615,"icon":616,"version":610},"2025-10-29","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-10-29\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-10-29\u002Ficon.webp",{"title":618,"path":619,"stem":620,"release-notes":621},"v0.beta.2025.10.21","\u002Freleases\u002Fall-releases\u002F2025-10-21-v0-beta-10-21","13.releases\u002F2.all-releases\u002F2025-10-21-v0-beta-10-21",{"date":622,"banner":623,"icon":624,"version":618},"2025-10-21","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-10-21\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-10-21\u002Ficon.webp",{"title":626,"path":627,"stem":628,"release-notes":629},"v0.beta.2025.10.14","\u002Freleases\u002Fall-releases\u002F2025-10-14-v0-beta-10-14","13.releases\u002F2.all-releases\u002F2025-10-14-v0-beta-10-14",{"date":630,"banner":631,"icon":632,"version":626},"2025-10-14","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-10-14\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-10-14\u002Ficon.webp",{"title":634,"path":635,"stem":636,"release-notes":637},"v0.beta.2025.10.08","\u002Freleases\u002Fall-releases\u002F2025-10-08-v0-beta-10-08","13.releases\u002F2.all-releases\u002F2025-10-08-v0-beta-10-08",{"date":638,"banner":639,"icon":640,"version":634},"2025-10-08","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-10-08\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-10-08\u002Ficon.webp",{"title":642,"path":643,"stem":644,"release-notes":645},"v0.beta.2025.10.01","\u002Freleases\u002Fall-releases\u002F2025-10-01-v0-beta-10-01","13.releases\u002F2.all-releases\u002F2025-10-01-v0-beta-10-01",{"date":646,"banner":647,"icon":648,"version":642},"2025-10-01","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-10-01\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-10-01\u002Ficon.webp",{"title":650,"path":651,"stem":652,"release-notes":653},"v0.beta.2025.09.23","\u002Freleases\u002Fall-releases\u002F2025-09-23-v0-beta-09-23","13.releases\u002F2.all-releases\u002F2025-09-23-v0-beta-09-23",{"date":654,"banner":655,"icon":656,"version":650},"2025-09-23","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-09-23\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-09-23\u002Ficon.webp",{"title":658,"path":659,"stem":660,"release-notes":661},"v0.beta.2025.09.16","\u002Freleases\u002Fall-releases\u002F2025-09-16-v0-beta-09-16","13.releases\u002F2.all-releases\u002F2025-09-16-v0-beta-09-16",{"date":662,"banner":663,"icon":664,"version":658},"2025-09-16","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-09-16\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-09-16\u002Ficon.webp",{"title":666,"path":667,"stem":668,"release-notes":669},"v0.beta.2025.09.03","\u002Freleases\u002Fall-releases\u002F2025-09-03-v0-beta-09-03","13.releases\u002F2.all-releases\u002F2025-09-03-v0-beta-09-03",{"date":670,"banner":671,"icon":672,"version":666},"2025-09-03","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-09-03\u002Fbanner.jpg","https:\u002F\u002Ffiles.poly.app\u002Fassets\u002Frelease-notes\u002F2025-09-03\u002Ficon.webp",{"id":674,"title":675,"body":676,"description":1621,"extension":1622,"file-extension":1623,"links":1623,"meta":1624,"mime-type":1625,"navigation":28,"path":1641,"release-notes":1623,"seo":1642,"stem":1645,"__hash__":1646},"docs\u002Fmime-types\u002Fmultipart\u002Fform-data.md","Multipart Form Data MIME Type",{"type":677,"value":678,"toc":1605},"minimark",[679,689,720,734,749,752,760,771,775,806,815,831,834,840,843,847,854,863,887,890,909,912,916,933,942,955,959,999,1009,1142,1165,1212,1216,1222,1225,1228,1234,1237,1304,1317,1321,1327,1330,1354,1359,1363,1372,1384,1387,1394,1406,1416,1601],[680,681,683,684,688],"h2",{"id":682},"what-does-multipartform-data-mean","What does ",[685,686,687],"code",{},"multipart\u002Fform-data"," mean?",[690,691,692,694,695,700,701,712],"p",{},[685,693,687],{}," represents an ordered set of named fields. Each field is a separate MIME part, so one request can carry short text values, binary files, and repeated field names without forcing every value into one text encoding. It is the standard ",[696,697,699],"a",{"href":698},"\u002Fmime-types\u002Ftext\u002Fhtml","HTML"," form encoding for file uploads and is also common in HTTP APIs.",[702,703,704],"sup",{},[696,705,711],{"href":706,"ariaDescribedBy":707,"dataFootnoteRef":709,"id":710},"#user-content-fn-1",[708],"footnote-label","","user-content-fnref-1","1",[702,713,714],{},[696,715,719],{"href":716,"ariaDescribedBy":717,"dataFootnoteRef":709,"id":718},"#user-content-fn-2",[708],"user-content-fnref-2","2",[690,721,722,723,726,727,733],{},"The media type has one required parameter: ",[685,724,725],{},"boundary",". IANA assigns it no file extension and no magic number.",[702,728,729],{},[696,730,711],{"href":706,"ariaDescribedBy":731,"dataFootnoteRef":709,"id":732},[708],"user-content-fnref-1-2"," A complete HTTP header looks like this:",[735,736,740],"pre",{"className":737,"code":738,"language":739,"meta":709,"style":709},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Content-Type: multipart\u002Fform-data; boundary=ExampleBoundary\n","http",[685,741,742],{"__ignoreMap":709},[743,744,747],"span",{"class":745,"line":746},"line",1,[743,748,738],{},[690,750,751],{},"The body uses that exact boundary to separate its parts:",[735,753,758],{"className":754,"code":756,"language":757,"meta":709},[755],"language-text","--ExampleBoundary\nContent-Disposition: form-data; name=\"title\"\n\nField notes\n--ExampleBoundary\nContent-Disposition: form-data; name=\"attachment\"; filename=\"notes.txt\"\nContent-Type: text\u002Fplain\n\nExample file contents\n--ExampleBoundary--\n","text",[685,759,756],{"__ignoreMap":709},[761,762,763,764,766,767,770],"note",{},"The boundary is part of the message framing, not file content. A parser needs the ",[685,765,725],{}," parameter from the surrounding ",[685,768,769],{},"Content-Type"," header. A body saved without that header can be difficult or impossible to decode reliably.",[680,772,774],{"id":773},"how-multipart-form-data-is-structured","How multipart form data is structured",[690,776,777,778,781,782,785,786,789,790,792,793,799,800],{},"RFC 7578 builds on the general multipart MIME model. Each part must have ",[685,779,780],{},"Content-Disposition: form-data"," and a ",[685,783,784],{},"name"," parameter containing the original field name. A file part should also provide a ",[685,787,788],{},"filename"," when one is available. Parts may declare their own ",[685,791,769],{},"; absent that header, the default is ",[696,794,796],{"href":795},"\u002Fmime-types\u002Ftext\u002Fplain",[685,797,798],{},"text\u002Fplain",".",[702,801,802],{},[696,803,719],{"href":716,"ariaDescribedBy":804,"dataFootnoteRef":709,"id":805},[708],"user-content-fnref-2-2",[690,807,808,809],{},"The separators use CRLF line endings, two hyphens, and the boundary value. The final separator adds another two hyphens to mark the end of the body. The chosen boundary must not occur inside any part.",[702,810,811],{},[696,812,719],{"href":716,"ariaDescribedBy":813,"dataFootnoteRef":709,"id":814},[708],"user-content-fnref-2-3",[690,816,817,818,820,821,824,825],{},"Field order and duplicates matter. RFC 7578 says intermediaries must not reorder results or combine parts that share a field name. Multiple files selected for one form field are therefore sent as separate parts with the same ",[685,819,784],{},", rather than inside the older nested ",[685,822,823],{},"multipart\u002Fmixed"," structure.",[702,826,827],{},[696,828,719],{"href":716,"ariaDescribedBy":829,"dataFootnoteRef":709,"id":830},[708],"user-content-fnref-2-4",[690,832,833],{},"This is one reason a multipart payload is not safely represented as a simple object. These three parts are distinct and ordered:",[735,835,838],{"className":836,"code":837,"language":757,"meta":709},[755],"name=\"tag\"  value=\"history\"\nname=\"tag\"  value=\"computing\"\nname=\"published\"  value=\"yes\"\n",[685,839,837],{"__ignoreMap":709},[690,841,842],{},"A decoder should preserve them as an ordered list until the receiving application's schema decides how duplicate names should be interpreted.",[680,844,846],{"id":845},"why-the-boundary-causes-parsing-errors","Why the boundary causes parsing errors",[690,848,849,850,853],{},"The boundary in the header and the delimiter in the body must agree byte for byte. A common mistake is to construct a browser ",[685,851,852],{},"FormData"," object but manually set only this header:",[735,855,857],{"className":737,"code":856,"language":739,"meta":709,"style":709},"Content-Type: multipart\u002Fform-data\n",[685,858,859],{"__ignoreMap":709},[743,860,861],{"class":745,"line":746},[743,862,856],{},[690,864,865,866,868,869,871,872,874,875,878,879],{},"That omits the boundary. When a browser serializes ",[685,867,852],{},", let it generate the ",[685,870,769],{}," header so its automatically chosen boundary matches the body. The ",[696,873,699],{"href":698}," Standard explicitly constructs the request media type by joining ",[685,876,877],{},"multipart\u002Fform-data; boundary="," with the boundary produced by its encoding algorithm.",[702,880,881],{},[696,882,886],{"href":883,"ariaDescribedBy":884,"dataFootnoteRef":709,"id":885},"#user-content-fn-4",[708],"user-content-fnref-4","3",[690,888,889],{},"Other common failures include:",[891,892,893,897,900,903,906],"ul",{},[894,895,896],"li",{},"Using line endings or closing delimiters that do not follow multipart syntax.",[894,898,899],{},"Decoding the whole request as text even though a part can contain arbitrary binary bytes.",[894,901,902],{},"Splitting on a guessed boundary instead of parsing the declared parameter.",[894,904,905],{},"Treating repeated field names as one value.",[894,907,908],{},"Trusting a submitted filename as a safe local path.",[690,910,911],{},"Use a maintained multipart parser for the server framework rather than splitting the body manually.",[680,913,915],{"id":914},"history-and-standardization","History and standardization",[690,917,918,919,921,922,924,925],{},"Ernesto Nebel and Larry Masinter introduced ",[685,920,687],{}," in RFC 1867 in November 1995. Their proposal added file upload controls to ",[696,923,699],{"href":698}," and defined a multipart representation that could efficiently transfer binary files alongside other form values.",[702,926,927],{},[696,928,932],{"href":929,"ariaDescribedBy":930,"dataFootnoteRef":709,"id":931},"#user-content-fn-3",[708],"user-content-fnref-3","4",[690,934,935,936],{},"RFC 2388 later documented the format in 1998. The current Standards Track specification is RFC 7578, published in July 2015, which obsoleted RFC 2388 and updated the IANA registration.",[702,937,938],{},[696,939,719],{"href":716,"ariaDescribedBy":940,"dataFootnoteRef":709,"id":941},[708],"user-content-fnref-2-5",[690,943,944,945,948,949],{},"The newer specification reflects deployed web practice. Among other changes, it requires multiple files for one field to use repeated parts, deprecates ",[685,946,947],{},"Content-Transfer-Encoding"," for binary-capable transports such as HTTP, and advises implementations on non-ASCII names and values.",[702,950,951],{},[696,952,719],{"href":716,"ariaDescribedBy":953,"dataFootnoteRef":709,"id":954},[708],"user-content-fnref-2-6",[680,956,958],{"id":957},"browser-and-application-support","Browser and application support",[690,960,961,962,964,965,969,970,972,973,975,976,979,980,983,984,987,988,799,991],{},"Current Chrome, Edge, Firefox, Opera, and Safari support multipart ",[696,963,699],{"href":698}," form submission and the ",[696,966,968],{"href":967},"\u002Fmime-types\u002Ftext\u002Fjavascript","JavaScript"," ",[685,971,852],{}," interface. MDN classifies ",[685,974,852],{}," as widely available across browsers. It can be sent with ",[685,977,978],{},"fetch()",", ",[685,981,982],{},"XMLHttpRequest.send()",", or ",[685,985,986],{},"navigator.sendBeacon()"," using the same representation as a form with ",[685,989,990],{},"enctype=\"multipart\u002Fform-data\"",[702,992,993],{},[696,994,998],{"href":995,"ariaDescribedBy":996,"dataFootnoteRef":709,"id":997},"#user-content-fn-5",[708],"user-content-fnref-5","5",[690,1000,1001,1002,1004,1005,1008],{},"An ",[696,1003,699],{"href":698}," file-upload form uses ",[685,1006,1007],{},"POST"," and declares the encoding explicitly:",[735,1010,1014],{"className":1011,"code":1012,"language":1013,"meta":709,"style":709},"language-html shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cform method=\"post\" enctype=\"multipart\u002Fform-data\">\n  \u003Cinput name=\"caption\">\n  \u003Cinput type=\"file\" name=\"attachment\">\n  \u003Cbutton>Upload\u003C\u002Fbutton>\n\u003C\u002Fform>\n","html",[685,1015,1016,1056,1079,1111,1133],{"__ignoreMap":709},[743,1017,1018,1022,1026,1030,1033,1036,1040,1042,1045,1047,1049,1051,1053],{"class":745,"line":746},[743,1019,1021],{"class":1020},"sMK4o","\u003C",[743,1023,1025],{"class":1024},"swJcz","form",[743,1027,1029],{"class":1028},"spNyl"," method",[743,1031,1032],{"class":1020},"=",[743,1034,1035],{"class":1020},"\"",[743,1037,1039],{"class":1038},"sfazB","post",[743,1041,1035],{"class":1020},[743,1043,1044],{"class":1028}," enctype",[743,1046,1032],{"class":1020},[743,1048,1035],{"class":1020},[743,1050,687],{"class":1038},[743,1052,1035],{"class":1020},[743,1054,1055],{"class":1020},">\n",[743,1057,1059,1062,1065,1068,1070,1072,1075,1077],{"class":745,"line":1058},2,[743,1060,1061],{"class":1020},"  \u003C",[743,1063,1064],{"class":1024},"input",[743,1066,1067],{"class":1028}," name",[743,1069,1032],{"class":1020},[743,1071,1035],{"class":1020},[743,1073,1074],{"class":1038},"caption",[743,1076,1035],{"class":1020},[743,1078,1055],{"class":1020},[743,1080,1082,1084,1086,1089,1091,1093,1096,1098,1100,1102,1104,1107,1109],{"class":745,"line":1081},3,[743,1083,1061],{"class":1020},[743,1085,1064],{"class":1024},[743,1087,1088],{"class":1028}," type",[743,1090,1032],{"class":1020},[743,1092,1035],{"class":1020},[743,1094,1095],{"class":1038},"file",[743,1097,1035],{"class":1020},[743,1099,1067],{"class":1028},[743,1101,1032],{"class":1020},[743,1103,1035],{"class":1020},[743,1105,1106],{"class":1038},"attachment",[743,1108,1035],{"class":1020},[743,1110,1055],{"class":1020},[743,1112,1114,1116,1119,1122,1126,1129,1131],{"class":745,"line":1113},4,[743,1115,1061],{"class":1020},[743,1117,1118],{"class":1024},"button",[743,1120,1121],{"class":1020},">",[743,1123,1125],{"class":1124},"sTEyZ","Upload",[743,1127,1128],{"class":1020},"\u003C\u002F",[743,1130,1118],{"class":1024},[743,1132,1055],{"class":1020},[743,1134,1136,1138,1140],{"class":745,"line":1135},5,[743,1137,1128],{"class":1020},[743,1139,1025],{"class":1024},[743,1141,1055],{"class":1020},[690,1143,1144,1145,1148,1149,1152,1153,1156,1157],{},"curl creates multipart requests with ",[685,1146,1147],{},"--form"," or ",[685,1150,1151],{},"-F",". Prefixing a value with ",[685,1154,1155],{},"@"," attaches the named file as a file upload.",[702,1158,1159],{},[696,1160,1164],{"href":1161,"ariaDescribedBy":1162,"dataFootnoteRef":709,"id":1163},"#user-content-fn-6",[708],"user-content-fnref-6","6",[735,1166,1170],{"className":1167,"code":1168,"language":1169,"meta":709,"style":709},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl --form 'caption=Field notes' \\\n  --form 'attachment=@notes.txt;type=text\u002Fplain' \\\n  https:\u002F\u002Fexample.com\u002Fupload\n","sh",[685,1171,1172,1193,1207],{"__ignoreMap":709},[743,1173,1174,1178,1181,1184,1187,1190],{"class":745,"line":746},[743,1175,1177],{"class":1176},"sBMFI","curl",[743,1179,1180],{"class":1038}," --form",[743,1182,1183],{"class":1020}," '",[743,1185,1186],{"class":1038},"caption=Field notes",[743,1188,1189],{"class":1020},"'",[743,1191,1192],{"class":1124}," \\\n",[743,1194,1195,1198,1200,1203,1205],{"class":745,"line":1058},[743,1196,1197],{"class":1038},"  --form",[743,1199,1183],{"class":1020},[743,1201,1202],{"class":1038},"attachment=@notes.txt;type=text\u002Fplain",[743,1204,1189],{"class":1020},[743,1206,1192],{"class":1124},[743,1208,1209],{"class":745,"line":1081},[743,1210,1211],{"class":1038},"  https:\u002F\u002Fexample.com\u002Fupload\n",[680,1213,1215],{"id":1214},"support-in-poly","Support in Poly",[690,1217,1218,1219,1221],{},"Poly recognizes the ",[685,1220,687],{}," MIME identifier and preserves labeled payloads for storage, sync, sharing, versioning, and download. It does not unpack the multipart body, extract individual fields or attachments, or provide a specialized preview.",[690,1223,1224],{},"You can find the stored payload by filename and ordinary file properties. Text field values, submitted filenames, and embedded file contents are not searchable, and the Poly agent cannot read them from the multipart container.",[690,1226,1227],{},"For useful content search, parse the request with a trusted tool and save the fields or attachments as appropriately typed files. Keep the original payload when exact request evidence matters.",[680,1229,1231,1233],{"id":1230},"multipartform-data-compared-with-url-encoding-and-json",[685,1232,687],{}," compared with URL encoding and JSON",[690,1235,1236],{},"Choose the representation that fits the data model rather than using multipart for every request.",[1238,1239,1240,1256],"table",{},[1241,1242,1243],"thead",{},[1244,1245,1246,1250,1253],"tr",{},[1247,1248,1249],"th",{},"Media type",[1247,1251,1252],{},"Best fit",[1247,1254,1255],{},"Key tradeoff",[1257,1258,1259,1272,1288],"tbody",{},[1244,1260,1261,1266,1269],{},[1262,1263,1264],"td",{},[685,1265,687],{},[1262,1267,1268],{},"Mixed text fields and file uploads",[1262,1270,1271],{},"Carries binary files directly, but has more framing overhead",[1244,1273,1274,1282,1285],{},[1262,1275,1276],{},[696,1277,1279],{"href":1278},"\u002Fmime-types\u002Fapplication\u002Fx-www-form-urlencoded",[685,1280,1281],{},"application\u002Fx-www-form-urlencoded",[1262,1283,1284],{},"Short, flat form fields",[1262,1286,1287],{},"Compact and simple, but file inputs do not transfer file bytes",[1244,1289,1290,1298,1301],{},[1262,1291,1292],{},[696,1293,1295],{"href":1294},"\u002Fmime-types\u002Fapplication\u002Fjson",[685,1296,1297],{},"application\u002Fjson",[1262,1299,1300],{},"Structured API data",[1262,1302,1303],{},"Represents arrays, objects, numbers, booleans, and null, but has no standard native file-part mechanism",[690,1305,1306,1307,1148,1310,1313,1314,1316],{},"Multipart field values do not gain JSON types. A part containing ",[685,1308,1309],{},"true",[685,1311,1312],{},"42"," is still text or bytes until an application schema interprets it. Likewise, a ",[685,1315,788],{}," parameter describes a submitted name, not proof of the part's format or safety.",[680,1318,1320],{"id":1319},"how-to-inspect-or-convert-a-multipart-payload","How to inspect or convert a multipart payload",[690,1322,1323,1324,1326],{},"A valid conversion needs both the body and its full ",[685,1325,769],{},", including the boundary. Parse the body into an ordered collection of parts, then handle each part according to its declared type and the receiving application's contract.",[690,1328,1329],{},"A practical inspection workflow is:",[1331,1332,1333,1339,1342,1345,1348,1351],"ol",{},[894,1334,1335,1336,1338],{},"Preserve the original body and ",[685,1337,769],{}," header.",[894,1340,1341],{},"Set limits for total bytes, part count, header size, and individual file size.",[894,1343,1344],{},"Parse with a maintained MIME or web-framework multipart library.",[894,1346,1347],{},"Retain duplicate names and original order.",[894,1349,1350],{},"Save file parts under newly generated safe names and validate their actual formats.",[894,1352,1353],{},"Export text fields to JSON only after deciding how duplicates and character encodings should map.",[690,1355,1356,1357,799],{},"There is no lossless universal conversion to JSON because JSON has no byte-string type, per-part headers, or repeated object keys with guaranteed order. A conversion can use arrays for duplicate fields and Base64 for file bytes, but that is an application convention rather than the meaning of ",[685,1358,687],{},[680,1360,1362],{"id":1361},"security-and-privacy-considerations","Security and privacy considerations",[690,1364,1365,1366],{},"Multipart encoding provides no confidentiality, integrity, authentication, or validation. RFC 7578 notes that form data often contains confidential or personally identifying information. Protect HTTP submissions with HTTPS and apply authorization, request-size limits, and cross-site request controls at the application layer.",[702,1367,1368],{},[696,1369,719],{"href":716,"ariaDescribedBy":1370,"dataFootnoteRef":709,"id":1371},[708],"user-content-fnref-2-7",[1373,1374,1375,1376,799,1378],"warning",{},"Treat every submitted filename, part header, media type, and byte sequence as untrusted. Strip directory information, generate safe storage names, prevent overwrites, scan or validate uploaded content as appropriate, and never execute a file merely because its part declared a familiar ",[685,1377,769],{},[702,1379,1380],{},[696,1381,719],{"href":716,"ariaDescribedBy":1382,"dataFootnoteRef":709,"id":1383},[708],"user-content-fnref-2-8",[690,1385,1386],{},"Multipart parsers should also bound memory, disk use, header length, part count, nesting, and processing time. Stream large uploads when possible. Reject malformed or incomplete bodies instead of guessing where one part ends and another begins.",[680,1388,1390,1391,1393],{"id":1389},"does-multipartform-data-have-a-file-extension","Does ",[685,1392,687],{}," have a file extension?",[690,1395,1396,1397,799,1399,1405],{},"No. IANA lists no extension or magic number for ",[685,1398,687],{},[702,1400,1401],{},[696,1402,711],{"href":706,"ariaDescribedBy":1403,"dataFootnoteRef":709,"id":1404},[708],"user-content-fnref-1-3"," It normally appears as a protocol message body whose framing depends on a boundary declared in the accompanying header.",[690,1407,1408,1409,1148,1412,1415],{},"Files named ",[685,1410,1411],{},".multipart",[685,1413,1414],{},".form-data"," may be useful local conventions, but they are not registered extensions. A filename alone also cannot preserve the required boundary parameter. If you archive a raw payload, save its HTTP metadata alongside it.",[1417,1418,1421,1426],"section",{"className":1419,"dataFootnotes":709},[1420],"footnotes",[680,1422,1425],{"className":1423,"id":708},[1424],"sr-only","Footnotes",[1331,1427,1428,1465,1535,1551,1568,1583],{},[894,1429,1431,1432,1443,1444,969,1451,969,1458],{"id":1430},"user-content-fn-1","Internet Assigned Numbers Authority. ",[696,1433,1437],{"href":1434,"rel":1435},"https:\u002F\u002Fwww.iana.org\u002Fassignments\u002Fmedia-types\u002Fmultipart\u002Fform-data",[1436],"nofollow",[1438,1439,1440,1442],"em",{},[685,1441,687],{}," Media Type Registration",". ",[696,1445,1450],{"href":1446,"ariaLabel":1447,"className":1448,"dataFootnoteBackref":709},"#user-content-fnref-1","Back to reference 1",[1449],"data-footnote-backref","↩",[696,1452,1450,1456],{"href":1453,"ariaLabel":1454,"className":1455,"dataFootnoteBackref":709},"#user-content-fnref-1-2","Back to reference 1-2",[1449],[702,1457,719],{},[696,1459,1450,1463],{"href":1460,"ariaLabel":1461,"className":1462,"dataFootnoteBackref":709},"#user-content-fnref-1-3","Back to reference 1-3",[1449],[702,1464,886],{},[894,1466,1468,1469,1478,1479,969,1484,969,1491,969,1498,969,1505,969,1512,969,1519,969,1527],{"id":1467},"user-content-fn-2","Masinter, L. ",[696,1470,1473],{"href":1471,"rel":1472},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc7578.html",[1436],[1438,1474,1475,1476],{},"RFC 7578: Returning Values from Forms: ",[685,1477,687],{},". Internet Engineering Task Force, July 2015. ",[696,1480,1450],{"href":1481,"ariaLabel":1482,"className":1483,"dataFootnoteBackref":709},"#user-content-fnref-2","Back to reference 2",[1449],[696,1485,1450,1489],{"href":1486,"ariaLabel":1487,"className":1488,"dataFootnoteBackref":709},"#user-content-fnref-2-2","Back to reference 2-2",[1449],[702,1490,719],{},[696,1492,1450,1496],{"href":1493,"ariaLabel":1494,"className":1495,"dataFootnoteBackref":709},"#user-content-fnref-2-3","Back to reference 2-3",[1449],[702,1497,886],{},[696,1499,1450,1503],{"href":1500,"ariaLabel":1501,"className":1502,"dataFootnoteBackref":709},"#user-content-fnref-2-4","Back to reference 2-4",[1449],[702,1504,932],{},[696,1506,1450,1510],{"href":1507,"ariaLabel":1508,"className":1509,"dataFootnoteBackref":709},"#user-content-fnref-2-5","Back to reference 2-5",[1449],[702,1511,998],{},[696,1513,1450,1517],{"href":1514,"ariaLabel":1515,"className":1516,"dataFootnoteBackref":709},"#user-content-fnref-2-6","Back to reference 2-6",[1449],[702,1518,1164],{},[696,1520,1450,1524],{"href":1521,"ariaLabel":1522,"className":1523,"dataFootnoteBackref":709},"#user-content-fnref-2-7","Back to reference 2-7",[1449],[702,1525,1526],{},"7",[696,1528,1450,1532],{"href":1529,"ariaLabel":1530,"className":1531,"dataFootnoteBackref":709},"#user-content-fnref-2-8","Back to reference 2-8",[1449],[702,1533,1534],{},"8",[894,1536,1538,1539,1443,1546],{"id":1537},"user-content-fn-4","WHATWG. ",[696,1540,1543],{"href":1541,"rel":1542},"https:\u002F\u002Fhtml.spec.whatwg.org\u002Fmultipage\u002Fform-control-infrastructure.html#multipart-form-data",[1436],[1438,1544,1545],{},"HTML Standard: Multipart Form Data Encoding Algorithm",[696,1547,1450],{"href":1548,"ariaLabel":1549,"className":1550,"dataFootnoteBackref":709},"#user-content-fnref-4","Back to reference 3",[1449],[894,1552,1554,1555,1562,1563],{"id":1553},"user-content-fn-3","Nebel, E., and L. Masinter. ",[696,1556,1559],{"href":1557,"rel":1558},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc1867.html",[1436],[1438,1560,1561],{},"RFC 1867: Form-based File Upload in HTML",". Internet Engineering Task Force, November 1995. ",[696,1564,1450],{"href":1565,"ariaLabel":1566,"className":1567,"dataFootnoteBackref":709},"#user-content-fnref-3","Back to reference 4",[1449],[894,1569,1571,1572,1443,1578],{"id":1570},"user-content-fn-5","MDN Web Docs. ",[696,1573,1576],{"href":1574,"rel":1575},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FFormData",[1436],[1438,1577,852],{},[696,1579,1450],{"href":1580,"ariaLabel":1581,"className":1582,"dataFootnoteBackref":709},"#user-content-fnref-5","Back to reference 5",[1449],[894,1584,1586,1587,1443,1596],{"id":1585},"user-content-fn-6","curl project. ",[696,1588,1591],{"href":1589,"rel":1590},"https:\u002F\u002Fcurl.se\u002Fdocs\u002Fmanpage.html#-F",[1436],[1438,1592,1593,1594],{},"curl Manual: ",[685,1595,1147],{},[696,1597,1450],{"href":1598,"ariaLabel":1599,"className":1600,"dataFootnoteBackref":709},"#user-content-fnref-6","Back to reference 6",[1449],[1602,1603,1604],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":709,"searchDepth":1058,"depth":1058,"links":1606},[1607,1609,1610,1611,1612,1613,1614,1616,1617,1618,1620],{"id":682,"depth":1058,"text":1608},"What does multipart\u002Fform-data mean?",{"id":773,"depth":1058,"text":774},{"id":845,"depth":1058,"text":846},{"id":914,"depth":1058,"text":915},{"id":957,"depth":1058,"text":958},{"id":1214,"depth":1058,"text":1215},{"id":1230,"depth":1058,"text":1615},"multipart\u002Fform-data compared with URL encoding and JSON",{"id":1319,"depth":1058,"text":1320},{"id":1361,"depth":1058,"text":1362},{"id":1389,"depth":1058,"text":1619},"Does multipart\u002Fform-data have a file extension?",{"id":708,"depth":1058,"text":1425},"Learn how `multipart\u002Fform-data` packages fields and file uploads, why its boundary matters, and how browsers, curl, and Poly handle it.","md",null,{},{"name":687,"extensions":1626,"invented-date":1627,"inventor-name":1628,"in-use":12,"browser-support":1629,"example-applications":1635,"poly-support":1637,"poly-indexed":1638,"poly-preview":1639,"poly-agent":1640},[],"1995","Ernesto Nebel and Larry Masinter",[1630,1631,1632,1633,1634],"Chrome","Edge","Firefox","Opera","Safari",[1636,1177],"Web browsers","Partial. Poly recognizes multipart\u002Fform-data and keeps the payload available for ordinary file management and download, but it does not unpack its fields or embedded files.","Partial. The payload is searchable by filename and ordinary file properties; field names, text values, and embedded file contents are not indexed.","No. Poly has no multipart form-data viewer, so download the payload to inspect it with a form-data parser.","No. The Poly agent cannot read or reason about fields or files inside a multipart\u002Fform-data payload.","\u002Fmime-types\u002Fmultipart\u002Fform-data",{"title":1643,"description":1644},"multipart\u002Fform-data MIME Type: Boundaries, Uploads, and Support","A practical guide to multipart\u002Fform-data, including boundaries, file uploads, browser support, parsing, security, conversion, and Poly support.","mime-types\u002Fmultipart\u002Fform-data","sHERFTN6P3QTRBkj828HJRqjjovnqR5n6TeVIH8op3o",[1623,1623],{"data":1649,"body":1650},{},{"type":1651,"children":1652},"root",[1653],{"type":1654,"tag":690,"props":1655,"children":1656},"element",{},[1657],{"type":757,"value":675},{"data":1659,"body":1660},{},{"type":1651,"children":1661},[1662],{"type":1654,"tag":690,"props":1663,"children":1664},{},[1665,1667,1672],{"type":757,"value":1666},"Learn how ",{"type":1654,"tag":685,"props":1668,"children":1670},{"className":1669},[],[1671],{"type":757,"value":687},{"type":757,"value":1673}," packages fields and file uploads, why its boundary matters, and how browsers, curl, and Poly handle it.",1788325917402]