{"catalogRevision":"cat_f13ab9a494120b5e","nodeId":"pattern:browser-file-uploads","label":"Browser file uploads","facet":"pattern","nodeType":"atom","canonicalPath":"/discover/pattern/browser-file-uploads","breadcrumbs":[{"id":"discovery","label":"Agent hosting discovery","canonicalPath":"/discover/discovery","kind":"root"},{"id":"pattern","label":"Architecture and data patterns","canonicalPath":"/discover/pattern","kind":"facet"},{"id":"pattern:object-storage-patterns","label":"Object storage patterns","canonicalPath":"/discover/pattern/object-storage-patterns","kind":"group"},{"id":"pattern:browser-file-uploads","label":"Browser file uploads","canonicalPath":"/discover/pattern/browser-file-uploads","kind":"atom"}],"parents":{"items":[{"id":"pattern:object-storage-patterns","label":"Object storage patterns","canonicalPath":"/discover/pattern/object-storage-patterns","kind":"group"}],"total":1,"offset":0,"limit":100},"children":{"items":[],"total":0,"offset":0,"limit":50},"recipes":{"items":[{"id":"page:recipes:appointment-booking:next-js:attachments","label":"Host appointment booking with Next.js: file attachments","canonicalPath":"/recipes/appointment-booking/next-js/attachments","kind":"recipe"},{"id":"page:recipes:appointment-booking:django:attachments","label":"Host appointment booking with Django: file attachments","canonicalPath":"/recipes/appointment-booking/django/attachments","kind":"recipe"},{"id":"page:recipes:appointment-booking:fastapi:attachments","label":"Host appointment booking with FastAPI: file attachments","canonicalPath":"/recipes/appointment-booking/fastapi/attachments","kind":"recipe"},{"id":"page:recipes:appointment-booking:flask:attachments","label":"Host appointment booking with Flask: file attachments","canonicalPath":"/recipes/appointment-booking/flask/attachments","kind":"recipe"},{"id":"page:recipes:appointment-booking:laravel:attachments","label":"Host appointment booking with Laravel: file attachments","canonicalPath":"/recipes/appointment-booking/laravel/attachments","kind":"recipe"},{"id":"page:recipes:appointment-booking:rails:attachments","label":"Host appointment booking with Rails: file attachments","canonicalPath":"/recipes/appointment-booking/rails/attachments","kind":"recipe"},{"id":"page:recipes:appointment-booking:asp-net-core:attachments","label":"Host appointment booking with ASP.NET Core: file attachments","canonicalPath":"/recipes/appointment-booking/asp-net-core/attachments","kind":"recipe"},{"id":"page:recipes:appointment-booking:spring-boot:attachments","label":"Host appointment booking with Spring Boot: file attachments","canonicalPath":"/recipes/appointment-booking/spring-boot/attachments","kind":"recipe"},{"id":"page:recipes:appointment-booking:sveltekit:attachments","label":"Host appointment booking with SvelteKit: file attachments","canonicalPath":"/recipes/appointment-booking/sveltekit/attachments","kind":"recipe"},{"id":"page:recipes:appointment-booking:phoenix:attachments","label":"Host appointment booking with Phoenix: file attachments","canonicalPath":"/recipes/appointment-booking/phoenix/attachments","kind":"recipe"},{"id":"page:recipes:event-registration:next-js:attachments","label":"Host event registration with Next.js: file attachments","canonicalPath":"/recipes/event-registration/next-js/attachments","kind":"recipe"},{"id":"page:recipes:event-registration:django:attachments","label":"Host event registration with Django: file attachments","canonicalPath":"/recipes/event-registration/django/attachments","kind":"recipe"},{"id":"page:recipes:event-registration:fastapi:attachments","label":"Host event registration with FastAPI: file attachments","canonicalPath":"/recipes/event-registration/fastapi/attachments","kind":"recipe"},{"id":"page:recipes:event-registration:flask:attachments","label":"Host event registration with Flask: file attachments","canonicalPath":"/recipes/event-registration/flask/attachments","kind":"recipe"},{"id":"page:recipes:event-registration:laravel:attachments","label":"Host event registration with Laravel: file attachments","canonicalPath":"/recipes/event-registration/laravel/attachments","kind":"recipe"},{"id":"page:recipes:event-registration:rails:attachments","label":"Host event registration with Rails: file attachments","canonicalPath":"/recipes/event-registration/rails/attachments","kind":"recipe"},{"id":"page:recipes:event-registration:asp-net-core:attachments","label":"Host event registration with ASP.NET Core: file attachments","canonicalPath":"/recipes/event-registration/asp-net-core/attachments","kind":"recipe"},{"id":"page:recipes:event-registration:spring-boot:attachments","label":"Host event registration with Spring Boot: file attachments","canonicalPath":"/recipes/event-registration/spring-boot/attachments","kind":"recipe"},{"id":"page:recipes:event-registration:sveltekit:attachments","label":"Host event registration with SvelteKit: file attachments","canonicalPath":"/recipes/event-registration/sveltekit/attachments","kind":"recipe"},{"id":"page:recipes:event-registration:phoenix:attachments","label":"Host event registration with Phoenix: file attachments","canonicalPath":"/recipes/event-registration/phoenix/attachments","kind":"recipe"},{"id":"page:recipes:form-collection:next-js:attachments","label":"Host form collection with Next.js: file attachments","canonicalPath":"/recipes/form-collection/next-js/attachments","kind":"recipe"},{"id":"page:recipes:form-collection:django:attachments","label":"Host form collection with Django: file attachments","canonicalPath":"/recipes/form-collection/django/attachments","kind":"recipe"},{"id":"page:recipes:form-collection:fastapi:attachments","label":"Host form collection with FastAPI: file attachments","canonicalPath":"/recipes/form-collection/fastapi/attachments","kind":"recipe"},{"id":"page:recipes:form-collection:flask:attachments","label":"Host form collection with Flask: file attachments","canonicalPath":"/recipes/form-collection/flask/attachments","kind":"recipe"},{"id":"page:recipes:form-collection:laravel:attachments","label":"Host form collection with Laravel: file attachments","canonicalPath":"/recipes/form-collection/laravel/attachments","kind":"recipe"},{"id":"page:recipes:form-collection:rails:attachments","label":"Host form collection with Rails: file attachments","canonicalPath":"/recipes/form-collection/rails/attachments","kind":"recipe"},{"id":"page:recipes:form-collection:asp-net-core:attachments","label":"Host form collection with ASP.NET Core: file attachments","canonicalPath":"/recipes/form-collection/asp-net-core/attachments","kind":"recipe"},{"id":"page:recipes:form-collection:spring-boot:attachments","label":"Host form collection with Spring Boot: file attachments","canonicalPath":"/recipes/form-collection/spring-boot/attachments","kind":"recipe"},{"id":"page:recipes:form-collection:sveltekit:attachments","label":"Host form collection with SvelteKit: file attachments","canonicalPath":"/recipes/form-collection/sveltekit/attachments","kind":"recipe"},{"id":"page:recipes:form-collection:phoenix:attachments","label":"Host form collection with Phoenix: file attachments","canonicalPath":"/recipes/form-collection/phoenix/attachments","kind":"recipe"},{"id":"page:recipes:csv-import-tool:next-js:attachments","label":"Host csv import tool with Next.js: file attachments","canonicalPath":"/recipes/csv-import-tool/next-js/attachments","kind":"recipe"},{"id":"page:recipes:csv-import-tool:django:attachments","label":"Host csv import tool with Django: file attachments","canonicalPath":"/recipes/csv-import-tool/django/attachments","kind":"recipe"},{"id":"page:recipes:csv-import-tool:fastapi:attachments","label":"Host csv import tool with FastAPI: file attachments","canonicalPath":"/recipes/csv-import-tool/fastapi/attachments","kind":"recipe"},{"id":"page:recipes:csv-import-tool:flask:attachments","label":"Host csv import tool with Flask: file attachments","canonicalPath":"/recipes/csv-import-tool/flask/attachments","kind":"recipe"},{"id":"page:recipes:csv-import-tool:laravel:attachments","label":"Host csv import tool with Laravel: file attachments","canonicalPath":"/recipes/csv-import-tool/laravel/attachments","kind":"recipe"},{"id":"page:recipes:csv-import-tool:rails:attachments","label":"Host csv import tool with Rails: file attachments","canonicalPath":"/recipes/csv-import-tool/rails/attachments","kind":"recipe"},{"id":"page:recipes:csv-import-tool:asp-net-core:attachments","label":"Host csv import tool with ASP.NET Core: file attachments","canonicalPath":"/recipes/csv-import-tool/asp-net-core/attachments","kind":"recipe"},{"id":"page:recipes:csv-import-tool:spring-boot:attachments","label":"Host csv import tool with Spring Boot: file attachments","canonicalPath":"/recipes/csv-import-tool/spring-boot/attachments","kind":"recipe"},{"id":"page:recipes:csv-import-tool:sveltekit:attachments","label":"Host csv import tool with SvelteKit: file attachments","canonicalPath":"/recipes/csv-import-tool/sveltekit/attachments","kind":"recipe"},{"id":"page:recipes:csv-import-tool:phoenix:attachments","label":"Host csv import tool with Phoenix: file attachments","canonicalPath":"/recipes/csv-import-tool/phoenix/attachments","kind":"recipe"},{"id":"page:recipes:reporting-dashboard:next-js:attachments","label":"Host reporting dashboard with Next.js: file attachments","canonicalPath":"/recipes/reporting-dashboard/next-js/attachments","kind":"recipe"},{"id":"page:recipes:reporting-dashboard:django:attachments","label":"Host reporting dashboard with Django: file attachments","canonicalPath":"/recipes/reporting-dashboard/django/attachments","kind":"recipe"},{"id":"page:recipes:reporting-dashboard:fastapi:attachments","label":"Host reporting dashboard with FastAPI: file attachments","canonicalPath":"/recipes/reporting-dashboard/fastapi/attachments","kind":"recipe"},{"id":"page:recipes:reporting-dashboard:flask:attachments","label":"Host reporting dashboard with Flask: file attachments","canonicalPath":"/recipes/reporting-dashboard/flask/attachments","kind":"recipe"},{"id":"page:recipes:reporting-dashboard:laravel:attachments","label":"Host reporting dashboard with Laravel: file attachments","canonicalPath":"/recipes/reporting-dashboard/laravel/attachments","kind":"recipe"},{"id":"page:recipes:reporting-dashboard:rails:attachments","label":"Host reporting dashboard with Rails: file attachments","canonicalPath":"/recipes/reporting-dashboard/rails/attachments","kind":"recipe"},{"id":"page:recipes:reporting-dashboard:asp-net-core:attachments","label":"Host reporting dashboard with ASP.NET Core: file attachments","canonicalPath":"/recipes/reporting-dashboard/asp-net-core/attachments","kind":"recipe"},{"id":"page:recipes:reporting-dashboard:spring-boot:attachments","label":"Host reporting dashboard with Spring Boot: file attachments","canonicalPath":"/recipes/reporting-dashboard/spring-boot/attachments","kind":"recipe"},{"id":"page:recipes:reporting-dashboard:sveltekit:attachments","label":"Host reporting dashboard with SvelteKit: file attachments","canonicalPath":"/recipes/reporting-dashboard/sveltekit/attachments","kind":"recipe"},{"id":"page:recipes:reporting-dashboard:phoenix:attachments","label":"Host reporting dashboard with Phoenix: file attachments","canonicalPath":"/recipes/reporting-dashboard/phoenix/attachments","kind":"recipe"}],"total":90,"offset":0,"limit":50},"related":[],"requiredBy":{"items":[],"total":0,"offset":0,"limit":50},"publishedRecipeCount":90,"scopeNote":"Architecture pattern to validate. Application code or external services may be needed; not a claimed managed feature.","nextActions":[{"actionId":"browse-catalog","label":"Browse the catalog index","operationId":"catalog_index","method":"GET","relativePath":"/v1/catalog","origin":"api","parameters":{},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"search-recipes","label":"Search published recipes by intent, stack and constraints","operationId":"search_recipes","method":"POST","relativePath":"/v1/catalog/search","origin":"api","parameters":{"body":{"limit":5,"query":"Browser file uploads"}},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:appointment-booking:next-js:attachments","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Aappointment-booking%3Anext-js%3Aattachments","origin":"api","parameters":{"recipeId":"page:recipes:appointment-booking:next-js:attachments"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:appointment-booking:django:attachments","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Aappointment-booking%3Adjango%3Aattachments","origin":"api","parameters":{"recipeId":"page:recipes:appointment-booking:django:attachments"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:appointment-booking:fastapi:attachments","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Aappointment-booking%3Afastapi%3Aattachments","origin":"api","parameters":{"recipeId":"page:recipes:appointment-booking:fastapi:attachments"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:appointment-booking:flask:attachments","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Aappointment-booking%3Aflask%3Aattachments","origin":"api","parameters":{"recipeId":"page:recipes:appointment-booking:flask:attachments"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:appointment-booking:laravel:attachments","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Aappointment-booking%3Alaravel%3Aattachments","origin":"api","parameters":{"recipeId":"page:recipes:appointment-booking:laravel:attachments"},"requiresAuthentication":false,"requiresApproval":false}]}