[{"data":1,"prerenderedAt":1720},["ShallowReactive",2],{"navigation_docs":3,"-form-guide-uploads":82,"-form-guide-uploads-surround":1715},[4],{"title":5,"path":6,"stem":7,"children":8,"page":25},"Form","\u002Fform","1.getting-started",[9,26,58],{"title":10,"path":11,"stem":12,"children":13,"page":25},"Getting Started","\u002Fform\u002Fgetting-started","1.getting-started\u002F1.installation",[14,17,21],{"title":15,"path":16,"stem":12},"Installation","\u002Fform\u002Fgetting-started\u002Finstallation",{"title":18,"path":19,"stem":20},"Your first form","\u002Fform\u002Fgetting-started\u002Ffirst-form","1.getting-started\u002F2.first-form",{"title":22,"path":23,"stem":24},"Vue rendering","\u002Fform\u002Fgetting-started\u002Fvue-rendering","1.getting-started\u002F3.vue-rendering",false,{"title":27,"path":28,"stem":29,"children":30,"page":25},"Guide","\u002Fform\u002Fguide","2.guide\u002F1.forms-data-validation",[31,34,38,42,46,50,54],{"title":32,"path":33,"stem":29},"Forms, data, and validation","\u002Fform\u002Fguide\u002Fforms-data-validation",{"title":35,"path":36,"stem":37},"Fields and visibility","\u002Fform\u002Fguide\u002Ffields-visibility","2.guide\u002F2.fields-visibility",{"title":39,"path":40,"stem":41},"Renderers and composables","\u002Fform\u002Fguide\u002Frenderers-composables","2.guide\u002F3.renderers-composables",{"title":43,"path":44,"stem":45},"Collections and wizards","\u002Fform\u002Fguide\u002Fcollections-wizards","2.guide\u002F4.collections-wizards",{"title":47,"path":48,"stem":49},"Comboboxes","\u002Fform\u002Fguide\u002Fcomboboxes","2.guide\u002F5.comboboxes",{"title":51,"path":52,"stem":53},"Uploads","\u002Fform\u002Fguide\u002Fuploads","2.guide\u002F6.uploads",{"title":55,"path":56,"stem":57},"Composer and rich text","\u002Fform\u002Fguide\u002Fcomposer-rich-text","2.guide\u002F7.composer-rich-text",{"title":59,"path":60,"stem":61,"children":62,"page":25},"Reference","\u002Fform\u002Freference","3.reference\u002F1.fields",[63,66,70,74,78],{"title":64,"path":65,"stem":61},"Fields","\u002Fform\u002Freference\u002Ffields",{"title":67,"path":68,"stem":69},"PHP API","\u002Fform\u002Freference\u002Fphp-api","3.reference\u002F2.php-api",{"title":71,"path":72,"stem":73},"Vue API","\u002Fform\u002Freference\u002Fvue-api","3.reference\u002F3.vue-api",{"title":75,"path":76,"stem":77},"Configuration and commands","\u002Fform\u002Freference\u002Fconfiguration-commands","3.reference\u002F4.configuration-commands",{"title":79,"path":80,"stem":81},"Resource shape","\u002Fform\u002Freference\u002Fresource-shape","3.reference\u002F5.resource-shape",{"id":83,"title":51,"body":84,"description":1709,"extension":1710,"links":1711,"meta":1712,"navigation":141,"path":52,"seo":1713,"stem":53,"__hash__":1714},"docs\u002Fform\u002F2.guide\u002F6.uploads.md",{"type":85,"value":86,"toc":1702},"minimark",[87,91,160,191,195,200,387,445,478,492,496,503,1146,1180,1184,1187,1418,1435,1452,1456,1463,1594,1601,1605,1608,1638,1695,1698],[88,89,90],"p",{},"Upload routes are opt-in. Register them in the host Laravel application's route file before using package-managed temporary, chunked, or direct uploads.",[92,93,99],"pre",{"className":94,"code":95,"filename":96,"language":97,"meta":98,"style":98},"language-php shiki shiki-themes material-theme-lighter catppuccin-mocha catppuccin-mocha","use Illuminate\\Support\\Facades\\Route;\n\nRoute::inertiaFormUploads();\n","routes\u002Fweb.php","php","",[100,101,102,136,143],"code",{"__ignoreMap":98},[103,104,107,111,115,119,122,124,127,129,133],"span",{"class":105,"line":106},"line",1,[103,108,110],{"class":109},"scOca","use",[103,112,114],{"class":113},"svMjs"," Illuminate",[103,116,118],{"class":117},"sOG8g","\\",[103,120,121],{"class":113},"Support",[103,123,118],{"class":117},[103,125,126],{"class":113},"Facades",[103,128,118],{"class":117},[103,130,132],{"class":131},"spKqO","Route",[103,134,135],{"class":117},";\n",[103,137,139],{"class":105,"line":138},2,[103,140,142],{"emptyLinePlaceholder":141},true,"\n",[103,144,146,149,153,157],{"class":105,"line":145},3,[103,147,132],{"class":148},"s6-7G",[103,150,152],{"class":151},"sWTNM","::",[103,154,156],{"class":155},"sgeHj","inertiaFormUploads",[103,158,159],{"class":117},"();\n",[88,161,162,163,166,167,170,171,174,175,178,179,182,183,186,187,190],{},"The defaults use the ",[100,164,165],{},"\u002F_inertia-forms"," prefix, ",[100,168,169],{},"inertia-forms.*"," route names, and ",[100,172,173],{},"web"," plus ",[100,176,177],{},"auth"," middleware. The macro accepts custom ",[100,180,181],{},"prefix",", ",[100,184,185],{},"middleware",", and ",[100,188,189],{},"name"," arguments.",[192,193,194],"warning",{},"Keep authentication in place and add your application's authorization, tenant, and rate-limit middleware. Upload endpoints allocate storage and should not be exposed as an unbounded public service.",[196,197,199],"h2",{"id":198},"choose-a-strategy","Choose a strategy",[92,201,203],{"className":94,"code":202,"language":97,"meta":98,"style":98},"use Inertify\\Form\\Fields\\File;\n\nFile::make('document')->storeWithForm();\nFile::make('avatar')->image()->maxSize(5 * 1024);\nFile::make('archive')->chunked(5 * 1024 * 1024);\nFile::make('video')->directToStorage('s3');\n",[100,204,205,227,231,264,312,351],{"__ignoreMap":98},[103,206,207,209,212,214,216,218,220,222,225],{"class":105,"line":106},[103,208,110],{"class":109},[103,210,211],{"class":113}," Inertify",[103,213,118],{"class":117},[103,215,5],{"class":113},[103,217,118],{"class":117},[103,219,64],{"class":113},[103,221,118],{"class":117},[103,223,224],{"class":131},"File",[103,226,135],{"class":117},[103,228,229],{"class":105,"line":138},[103,230,142],{"emptyLinePlaceholder":141},[103,232,233,235,237,240,243,247,251,253,256,259,262],{"class":105,"line":145},[103,234,224],{"class":148},[103,236,152],{"class":151},[103,238,239],{"class":155},"make",[103,241,242],{"class":117},"(",[103,244,246],{"class":245},"sQGZM","'",[103,248,250],{"class":249},"s2lAL","document",[103,252,246],{"class":245},[103,254,255],{"class":117},")",[103,257,258],{"class":151},"->",[103,260,261],{"class":155},"storeWithForm",[103,263,159],{"class":117},[103,265,267,269,271,273,275,277,280,282,284,286,289,292,294,297,299,303,306,309],{"class":105,"line":266},4,[103,268,224],{"class":148},[103,270,152],{"class":151},[103,272,239],{"class":155},[103,274,242],{"class":117},[103,276,246],{"class":245},[103,278,279],{"class":249},"avatar",[103,281,246],{"class":245},[103,283,255],{"class":117},[103,285,258],{"class":151},[103,287,288],{"class":155},"image",[103,290,291],{"class":117},"()",[103,293,258],{"class":151},[103,295,296],{"class":155},"maxSize",[103,298,242],{"class":117},[103,300,302],{"class":301},"sCOdc","5",[103,304,305],{"class":151}," *",[103,307,308],{"class":301}," 1024",[103,310,311],{"class":117},");\n",[103,313,315,317,319,321,323,325,328,330,332,334,337,339,341,343,345,347,349],{"class":105,"line":314},5,[103,316,224],{"class":148},[103,318,152],{"class":151},[103,320,239],{"class":155},[103,322,242],{"class":117},[103,324,246],{"class":245},[103,326,327],{"class":249},"archive",[103,329,246],{"class":245},[103,331,255],{"class":117},[103,333,258],{"class":151},[103,335,336],{"class":155},"chunked",[103,338,242],{"class":117},[103,340,302],{"class":301},[103,342,305],{"class":151},[103,344,308],{"class":301},[103,346,305],{"class":151},[103,348,308],{"class":301},[103,350,311],{"class":117},[103,352,354,356,358,360,362,364,367,369,371,373,376,378,380,383,385],{"class":105,"line":353},6,[103,355,224],{"class":148},[103,357,152],{"class":151},[103,359,239],{"class":155},[103,361,242],{"class":117},[103,363,246],{"class":245},[103,365,366],{"class":249},"video",[103,368,246],{"class":245},[103,370,255],{"class":117},[103,372,258],{"class":151},[103,374,375],{"class":155},"directToStorage",[103,377,242],{"class":117},[103,379,246],{"class":245},[103,381,382],{"class":249},"s3",[103,384,246],{"class":245},[103,386,311],{"class":117},[388,389,390,403],"table",{},[391,392,393],"thead",{},[394,395,396,400],"tr",{},[397,398,399],"th",{},"Strategy",[397,401,402],{},"Behavior",[404,405,406,417,425,435],"tbody",{},[394,407,408,414],{},[409,410,411],"td",{},[100,412,413],{},"storeWithForm()",[409,415,416],{},"Sends native browser files with the final Inertia request.",[394,418,419,422],{},[409,420,421],{},"Temporary (default)",[409,423,424],{},"Uploads before submission and stores an encrypted, expiring token in form data.",[394,426,427,432],{},[409,428,429],{},[100,430,431],{},"chunked(bytes)",[409,433,434],{},"Uploads resumable chunks and can continue from the server-reported offset.",[394,436,437,442],{},[409,438,439],{},[100,440,441],{},"directToStorage(disk)",[409,443,444],{},"Uses a disk's temporary upload support or multipart API; non-S3 disks use the package fallback.",[88,446,447,448,182,451,182,454,182,457,182,460,182,463,186,466,469,470,473,474,477],{},"Configure upload content with ",[100,449,450],{},"image()",[100,452,453],{},"accept()",[100,455,456],{},"minSize()",[100,458,459],{},"maxSize()",[100,461,462],{},"dimensions()",[100,464,465],{},"minFiles()",[100,467,468],{},"maxFiles()",". These constraints validate actual upload content, not token strings. ",[100,471,472],{},"requireValidatedUploads()"," and ",[100,475,476],{},"validateUploadsUsing()"," support reusable validation profiles.",[88,479,480,481,182,484,487,488,491],{},"The serialized field contains both the documented flat route properties and an additive upload descriptor. You can override endpoints with ",[100,482,483],{},"temporaryUploadUrl()",[100,485,486],{},"temporaryUploadDeleteUrl()",", or a custom ",[100,489,490],{},"upload()"," descriptor when an application-owned transport is required.",[196,493,495],{"id":494},"render-upload-state","Render upload state",[88,497,498,499,502],{},"Use ",[100,500,501],{},"useFile()"," in an application renderer. It composes the field controller with upload progress and mutation methods.",[92,504,509],{"className":505,"code":506,"filename":507,"language":508,"meta":98,"style":98},"language-vue shiki shiki-themes material-theme-lighter catppuccin-mocha catppuccin-mocha","\u003Cscript setup lang=\"ts\">\nimport { useFile, type FormFieldSlotProps } from '@inertify\u002Fform-vue'\n\nconst props = defineProps\u003CFormFieldSlotProps>()\nconst file = useFile(props.name, props.form)\n\nfunction select(event: Event) {\n  const input = event.currentTarget as HTMLInputElement\n\n  if (input.files) {\n    void file.upload(input.files)\n  }\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv v-if=\"visible\">\n    \u003Clabel :for=\"`file-${name}`\">{{ field.label }}\u003C\u002Flabel>\n    \u003Cinput\n      :id=\"`file-${name}`\"\n      type=\"file\"\n      :multiple=\"field.multiple === true\"\n      :accept=\"Array.isArray(field.accept) ? field.accept.join(',') : field.accept\"\n      :disabled=\"disabled\"\n      @change=\"select\"\n    >\n\n    \u003Cprogress\n      v-if=\"file.uploadState.progress !== null\"\n      :value=\"file.uploadState.progress\"\n      max=\"100\"\n    \u002F>\n\n    \u003Cul>\n      \u003Cli v-for=\"(uploaded, index) in file.uploadState.files\" :key=\"uploaded.key\">\n        {{ uploaded.name }}\n        \u003Cbutton type=\"button\" @click=\"file.remove(index)\">Remove\u003C\u002Fbutton>\n      \u003C\u002Fli>\n    \u003C\u002Ful>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","resources\u002Fjs\u002Fcomponents\u002Fform\u002FFileField.vue","vue",[100,510,511,541,577,581,607,636,640,666,692,697,721,746,752,758,768,773,783,806,838,846,861,876,891,906,921,936,942,947,955,970,985,1000,1009,1014,1024,1059,1065,1107,1117,1127,1137],{"__ignoreMap":98},[103,512,513,516,520,524,527,530,533,536,538],{"class":105,"line":106},[103,514,515],{"class":151},"\u003C",[103,517,519],{"class":518},"sgRj0","script",[103,521,523],{"class":522},"sGkbZ"," setup",[103,525,526],{"class":522}," lang",[103,528,529],{"class":151},"=",[103,531,532],{"class":245},"\"",[103,534,535],{"class":249},"ts",[103,537,532],{"class":245},[103,539,540],{"class":151},">\n",[103,542,543,547,550,553,556,559,562,565,568,571,574],{"class":105,"line":138},[103,544,546],{"class":545},"su_vF","import",[103,548,549],{"class":117}," {",[103,551,552],{"class":113}," useFile",[103,554,555],{"class":117},",",[103,557,558],{"class":545}," type",[103,560,561],{"class":113}," FormFieldSlotProps",[103,563,564],{"class":117}," }",[103,566,567],{"class":545}," from",[103,569,570],{"class":245}," '",[103,572,573],{"class":249},"@inertify\u002Fform-vue",[103,575,576],{"class":245},"'\n",[103,578,579],{"class":105,"line":145},[103,580,142],{"emptyLinePlaceholder":141},[103,582,583,587,590,592,595,598,601,604],{"class":105,"line":266},[103,584,586],{"class":585},"sNFzF","const",[103,588,589],{"class":113}," props ",[103,591,529],{"class":151},[103,593,594],{"class":155}," defineProps",[103,596,515],{"class":597},"sdlML",[103,599,600],{"class":148},"FormFieldSlotProps",[103,602,603],{"class":597},">",[103,605,606],{"class":113},"()\n",[103,608,609,611,614,616,618,621,624,626,628,631,633],{"class":105,"line":314},[103,610,586],{"class":585},[103,612,613],{"class":113}," file ",[103,615,529],{"class":151},[103,617,552],{"class":155},[103,619,620],{"class":113},"(props",[103,622,623],{"class":151},".",[103,625,189],{"class":113},[103,627,555],{"class":117},[103,629,630],{"class":113}," props",[103,632,623],{"class":151},[103,634,635],{"class":113},"form)\n",[103,637,638],{"class":105,"line":353},[103,639,142],{"emptyLinePlaceholder":141},[103,641,643,646,649,651,655,658,661,663],{"class":105,"line":642},7,[103,644,645],{"class":585},"function",[103,647,648],{"class":155}," select",[103,650,242],{"class":117},[103,652,654],{"class":653},"s12WM","event",[103,656,657],{"class":151},":",[103,659,660],{"class":148}," Event",[103,662,255],{"class":117},[103,664,665],{"class":117}," {\n",[103,667,669,672,675,678,681,683,686,689],{"class":105,"line":668},8,[103,670,671],{"class":585},"  const",[103,673,674],{"class":113}," input",[103,676,677],{"class":151}," =",[103,679,680],{"class":113}," event",[103,682,623],{"class":151},[103,684,685],{"class":113},"currentTarget",[103,687,688],{"class":545}," as",[103,690,691],{"class":148}," HTMLInputElement\n",[103,693,695],{"class":105,"line":694},9,[103,696,142],{"emptyLinePlaceholder":141},[103,698,700,703,707,710,712,715,718],{"class":105,"line":699},10,[103,701,702],{"class":545},"  if",[103,704,706],{"class":705},"sHTG8"," (",[103,708,709],{"class":113},"input",[103,711,623],{"class":151},[103,713,714],{"class":113},"files",[103,716,717],{"class":705},") ",[103,719,720],{"class":117},"{\n",[103,722,724,727,730,732,735,737,739,741,743],{"class":105,"line":723},11,[103,725,726],{"class":151},"    void",[103,728,729],{"class":113}," file",[103,731,623],{"class":151},[103,733,734],{"class":155},"upload",[103,736,242],{"class":705},[103,738,709],{"class":113},[103,740,623],{"class":151},[103,742,714],{"class":113},[103,744,745],{"class":705},")\n",[103,747,749],{"class":105,"line":748},12,[103,750,751],{"class":117},"  }\n",[103,753,755],{"class":105,"line":754},13,[103,756,757],{"class":117},"}\n",[103,759,761,764,766],{"class":105,"line":760},14,[103,762,763],{"class":151},"\u003C\u002F",[103,765,519],{"class":518},[103,767,540],{"class":151},[103,769,771],{"class":105,"line":770},15,[103,772,142],{"emptyLinePlaceholder":141},[103,774,776,778,781],{"class":105,"line":775},16,[103,777,515],{"class":151},[103,779,780],{"class":518},"template",[103,782,540],{"class":151},[103,784,786,789,792,795,797,799,802,804],{"class":105,"line":785},17,[103,787,788],{"class":151},"  \u003C",[103,790,791],{"class":518},"div",[103,793,794],{"class":522}," v-if",[103,796,529],{"class":151},[103,798,532],{"class":245},[103,800,801],{"class":249},"visible",[103,803,532],{"class":245},[103,805,540],{"class":151},[103,807,809,812,815,818,820,822,825,827,829,832,834,836],{"class":105,"line":808},18,[103,810,811],{"class":151},"    \u003C",[103,813,814],{"class":518},"label",[103,816,817],{"class":522}," :for",[103,819,529],{"class":151},[103,821,532],{"class":245},[103,823,824],{"class":249},"`file-${name}`",[103,826,532],{"class":245},[103,828,603],{"class":151},[103,830,831],{"class":113},"{{ field.label }}",[103,833,763],{"class":151},[103,835,814],{"class":518},[103,837,540],{"class":151},[103,839,841,843],{"class":105,"line":840},19,[103,842,811],{"class":151},[103,844,845],{"class":518},"input\n",[103,847,849,852,854,856,858],{"class":105,"line":848},20,[103,850,851],{"class":522},"      :id",[103,853,529],{"class":151},[103,855,532],{"class":245},[103,857,824],{"class":249},[103,859,860],{"class":245},"\"\n",[103,862,864,867,869,871,874],{"class":105,"line":863},21,[103,865,866],{"class":522},"      type",[103,868,529],{"class":151},[103,870,532],{"class":245},[103,872,873],{"class":249},"file",[103,875,860],{"class":245},[103,877,879,882,884,886,889],{"class":105,"line":878},22,[103,880,881],{"class":522},"      :multiple",[103,883,529],{"class":151},[103,885,532],{"class":245},[103,887,888],{"class":249},"field.multiple === true",[103,890,860],{"class":245},[103,892,894,897,899,901,904],{"class":105,"line":893},23,[103,895,896],{"class":522},"      :accept",[103,898,529],{"class":151},[103,900,532],{"class":245},[103,902,903],{"class":249},"Array.isArray(field.accept) ? field.accept.join(',') : field.accept",[103,905,860],{"class":245},[103,907,909,912,914,916,919],{"class":105,"line":908},24,[103,910,911],{"class":522},"      :disabled",[103,913,529],{"class":151},[103,915,532],{"class":245},[103,917,918],{"class":249},"disabled",[103,920,860],{"class":245},[103,922,924,927,929,931,934],{"class":105,"line":923},25,[103,925,926],{"class":522},"      @change",[103,928,529],{"class":151},[103,930,532],{"class":245},[103,932,933],{"class":249},"select",[103,935,860],{"class":245},[103,937,939],{"class":105,"line":938},26,[103,940,941],{"class":151},"    >\n",[103,943,945],{"class":105,"line":944},27,[103,946,142],{"emptyLinePlaceholder":141},[103,948,950,952],{"class":105,"line":949},28,[103,951,811],{"class":151},[103,953,954],{"class":518},"progress\n",[103,956,958,961,963,965,968],{"class":105,"line":957},29,[103,959,960],{"class":522},"      v-if",[103,962,529],{"class":151},[103,964,532],{"class":245},[103,966,967],{"class":249},"file.uploadState.progress !== null",[103,969,860],{"class":245},[103,971,973,976,978,980,983],{"class":105,"line":972},30,[103,974,975],{"class":522},"      :value",[103,977,529],{"class":151},[103,979,532],{"class":245},[103,981,982],{"class":249},"file.uploadState.progress",[103,984,860],{"class":245},[103,986,988,991,993,995,998],{"class":105,"line":987},31,[103,989,990],{"class":522},"      max",[103,992,529],{"class":151},[103,994,532],{"class":245},[103,996,997],{"class":249},"100",[103,999,860],{"class":245},[103,1001,1003,1007],{"class":105,"line":1002},32,[103,1004,1006],{"class":1005},"sxSEj","    \u002F",[103,1008,540],{"class":151},[103,1010,1012],{"class":105,"line":1011},33,[103,1013,142],{"emptyLinePlaceholder":141},[103,1015,1017,1019,1022],{"class":105,"line":1016},34,[103,1018,811],{"class":151},[103,1020,1021],{"class":518},"ul",[103,1023,540],{"class":151},[103,1025,1027,1030,1033,1036,1038,1040,1043,1045,1048,1050,1052,1055,1057],{"class":105,"line":1026},35,[103,1028,1029],{"class":151},"      \u003C",[103,1031,1032],{"class":518},"li",[103,1034,1035],{"class":522}," v-for",[103,1037,529],{"class":151},[103,1039,532],{"class":245},[103,1041,1042],{"class":249},"(uploaded, index) in file.uploadState.files",[103,1044,532],{"class":245},[103,1046,1047],{"class":522}," :key",[103,1049,529],{"class":151},[103,1051,532],{"class":245},[103,1053,1054],{"class":249},"uploaded.key",[103,1056,532],{"class":245},[103,1058,540],{"class":151},[103,1060,1062],{"class":105,"line":1061},36,[103,1063,1064],{"class":113},"        {{ uploaded.name }}\n",[103,1066,1068,1071,1074,1076,1078,1080,1082,1084,1087,1089,1091,1094,1096,1098,1101,1103,1105],{"class":105,"line":1067},37,[103,1069,1070],{"class":151},"        \u003C",[103,1072,1073],{"class":518},"button",[103,1075,558],{"class":522},[103,1077,529],{"class":151},[103,1079,532],{"class":245},[103,1081,1073],{"class":249},[103,1083,532],{"class":245},[103,1085,1086],{"class":522}," @click",[103,1088,529],{"class":151},[103,1090,532],{"class":245},[103,1092,1093],{"class":249},"file.remove(index)",[103,1095,532],{"class":245},[103,1097,603],{"class":151},[103,1099,1100],{"class":113},"Remove",[103,1102,763],{"class":151},[103,1104,1073],{"class":518},[103,1106,540],{"class":151},[103,1108,1110,1113,1115],{"class":105,"line":1109},38,[103,1111,1112],{"class":151},"      \u003C\u002F",[103,1114,1032],{"class":518},[103,1116,540],{"class":151},[103,1118,1120,1123,1125],{"class":105,"line":1119},39,[103,1121,1122],{"class":151},"    \u003C\u002F",[103,1124,1021],{"class":518},[103,1126,540],{"class":151},[103,1128,1130,1133,1135],{"class":105,"line":1129},40,[103,1131,1132],{"class":151},"  \u003C\u002F",[103,1134,791],{"class":518},[103,1136,540],{"class":151},[103,1138,1140,1142,1144],{"class":105,"line":1139},41,[103,1141,763],{"class":151},[103,1143,780],{"class":518},[103,1145,540],{"class":151},[88,1147,1148,1151,1152,182,1154,182,1157,182,1160,182,1163,182,1166,182,1169,186,1172,1175,1176,1179],{},[100,1149,1150],{},"useFormUploads()"," manages all upload paths and exposes ",[100,1153,734],{},[100,1155,1156],{},"retry",[100,1158,1159],{},"pause",[100,1161,1162],{},"resume",[100,1164,1165],{},"remove",[100,1167,1168],{},"reorder",[100,1170,1171],{},"cancel",[100,1173,1174],{},"clear",". ",[100,1177,1178],{},"FormUploads"," exposes the same behavior through a renderless slot. Pause and resume are meaningful for resumable strategies; the state always reports status, progress, bytes, errors, uploaded resources, and pending browser files.",[196,1181,1183],{"id":1182},"resolve-submitted-uploads","Resolve submitted uploads",[88,1185,1186],{},"After validation, keep normal model attributes separate from token-based files:",[92,1188,1190],{"className":94,"code":1189,"language":97,"meta":98,"style":98},"$data = $form->validated(files: false);\n\nif ($avatar = $form->upload('avatar')) {\n    $data['avatar_path'] = $avatar->store('avatars', 'public');\n}\n\nforeach ($form->uploads('gallery') as $upload) {\n    $upload->store('gallery', 'public');\n}\n\n$profile->update($data);\n",[100,1191,1192,1226,1230,1265,1317,1321,1325,1362,1390,1394,1398],{"__ignoreMap":98},[103,1193,1194,1197,1200,1202,1205,1208,1210,1213,1215,1218,1220,1224],{"class":105,"line":106},[103,1195,1196],{"class":1005},"$",[103,1198,1199],{"class":113},"data ",[103,1201,529],{"class":151},[103,1203,1204],{"class":1005}," $",[103,1206,1207],{"class":113},"form",[103,1209,258],{"class":151},[103,1211,1212],{"class":155},"validated",[103,1214,242],{"class":117},[103,1216,714],{"class":1217},"sRLcR",[103,1219,657],{"class":117},[103,1221,1223],{"class":1222},"s27pR"," false",[103,1225,311],{"class":117},[103,1227,1228],{"class":105,"line":138},[103,1229,142],{"emptyLinePlaceholder":141},[103,1231,1232,1235,1237,1239,1242,1244,1246,1248,1250,1252,1254,1256,1258,1260,1263],{"class":105,"line":145},[103,1233,1234],{"class":545},"if",[103,1236,706],{"class":117},[103,1238,1196],{"class":1005},[103,1240,1241],{"class":113},"avatar ",[103,1243,529],{"class":151},[103,1245,1204],{"class":1005},[103,1247,1207],{"class":113},[103,1249,258],{"class":151},[103,1251,734],{"class":155},[103,1253,242],{"class":117},[103,1255,246],{"class":245},[103,1257,279],{"class":249},[103,1259,246],{"class":245},[103,1261,1262],{"class":117},"))",[103,1264,665],{"class":117},[103,1266,1267,1270,1273,1276,1278,1281,1283,1286,1288,1290,1292,1294,1297,1299,1301,1304,1306,1308,1310,1313,1315],{"class":105,"line":266},[103,1268,1269],{"class":1005},"    $",[103,1271,1272],{"class":113},"data",[103,1274,1275],{"class":117},"[",[103,1277,246],{"class":245},[103,1279,1280],{"class":249},"avatar_path",[103,1282,246],{"class":245},[103,1284,1285],{"class":117},"]",[103,1287,677],{"class":151},[103,1289,1204],{"class":1005},[103,1291,279],{"class":113},[103,1293,258],{"class":151},[103,1295,1296],{"class":155},"store",[103,1298,242],{"class":117},[103,1300,246],{"class":245},[103,1302,1303],{"class":249},"avatars",[103,1305,246],{"class":245},[103,1307,555],{"class":117},[103,1309,570],{"class":245},[103,1311,1312],{"class":249},"public",[103,1314,246],{"class":245},[103,1316,311],{"class":117},[103,1318,1319],{"class":105,"line":314},[103,1320,757],{"class":117},[103,1322,1323],{"class":105,"line":353},[103,1324,142],{"emptyLinePlaceholder":141},[103,1326,1327,1330,1332,1334,1336,1338,1341,1343,1345,1348,1350,1352,1354,1356,1358,1360],{"class":105,"line":642},[103,1328,1329],{"class":545},"foreach",[103,1331,706],{"class":117},[103,1333,1196],{"class":1005},[103,1335,1207],{"class":113},[103,1337,258],{"class":151},[103,1339,1340],{"class":155},"uploads",[103,1342,242],{"class":117},[103,1344,246],{"class":245},[103,1346,1347],{"class":249},"gallery",[103,1349,246],{"class":245},[103,1351,255],{"class":117},[103,1353,688],{"class":151},[103,1355,1204],{"class":1005},[103,1357,734],{"class":113},[103,1359,255],{"class":117},[103,1361,665],{"class":117},[103,1363,1364,1366,1368,1370,1372,1374,1376,1378,1380,1382,1384,1386,1388],{"class":105,"line":668},[103,1365,1269],{"class":1005},[103,1367,734],{"class":113},[103,1369,258],{"class":151},[103,1371,1296],{"class":155},[103,1373,242],{"class":117},[103,1375,246],{"class":245},[103,1377,1347],{"class":249},[103,1379,246],{"class":245},[103,1381,555],{"class":117},[103,1383,570],{"class":245},[103,1385,1312],{"class":249},[103,1387,246],{"class":245},[103,1389,311],{"class":117},[103,1391,1392],{"class":105,"line":694},[103,1393,757],{"class":117},[103,1395,1396],{"class":105,"line":699},[103,1397,142],{"emptyLinePlaceholder":141},[103,1399,1400,1402,1405,1407,1410,1412,1414,1416],{"class":105,"line":723},[103,1401,1196],{"class":1005},[103,1403,1404],{"class":113},"profile",[103,1406,258],{"class":151},[103,1408,1409],{"class":155},"update",[103,1411,242],{"class":117},[103,1413,1196],{"class":1005},[103,1415,1272],{"class":113},[103,1417,311],{"class":117},[88,1419,1420,1422,1423,1426,1427,1430,1431,1434],{},[100,1421,490],{}," returns one ",[100,1424,1425],{},"SubmittedUpload"," or ",[100,1428,1429],{},"null","; ",[100,1432,1433],{},"uploads()"," follows the submitted order. Tokens are encrypted and expiring, and the server rejects tampered, expired, disk-mismatched, or validation-profile-mismatched values. Existing files resolve separately and cannot be stored as new uploads.",[88,1436,1437,1438,1440,1441,1444,1445,473,1448,1451],{},"For ",[100,1439,413],{},", read the native file from ",[100,1442,1443],{},"validated()"," or Laravel's request file bag instead. Request macros ",[100,1446,1447],{},"formUpload('avatar')",[100,1449,1450],{},"orderedFormUploads('gallery')"," are available when direct request access is more convenient.",[196,1453,1455],{"id":1454},"existing-files-and-media-library","Existing files and Media Library",[88,1457,1458,1459,1462],{},"Serialize retained files with ",[100,1460,1461],{},"ExistingFile::fromDisk()"," or the optional Spatie Media Library adapter:",[92,1464,1466],{"className":94,"code":1465,"language":97,"meta":98,"style":98},"use Inertify\\Form\\Uploads\\ExistingFile;\n\nFile::make('gallery')\n    ->multiple()\n    ->mediaCollection('gallery')\n    ->existingFiles(\n        fn () => ExistingFile::fromMediaLibrary($profile->getMedia('gallery')),\n    );\n",[100,1467,1468,1489,1493,1511,1521,1538,1548,1589],{"__ignoreMap":98},[103,1469,1470,1472,1474,1476,1478,1480,1482,1484,1487],{"class":105,"line":106},[103,1471,110],{"class":109},[103,1473,211],{"class":113},[103,1475,118],{"class":117},[103,1477,5],{"class":113},[103,1479,118],{"class":117},[103,1481,51],{"class":113},[103,1483,118],{"class":117},[103,1485,1486],{"class":131},"ExistingFile",[103,1488,135],{"class":117},[103,1490,1491],{"class":105,"line":138},[103,1492,142],{"emptyLinePlaceholder":141},[103,1494,1495,1497,1499,1501,1503,1505,1507,1509],{"class":105,"line":145},[103,1496,224],{"class":148},[103,1498,152],{"class":151},[103,1500,239],{"class":155},[103,1502,242],{"class":117},[103,1504,246],{"class":245},[103,1506,1347],{"class":249},[103,1508,246],{"class":245},[103,1510,745],{"class":117},[103,1512,1513,1516,1519],{"class":105,"line":266},[103,1514,1515],{"class":151},"    ->",[103,1517,1518],{"class":155},"multiple",[103,1520,606],{"class":117},[103,1522,1523,1525,1528,1530,1532,1534,1536],{"class":105,"line":314},[103,1524,1515],{"class":151},[103,1526,1527],{"class":155},"mediaCollection",[103,1529,242],{"class":117},[103,1531,246],{"class":245},[103,1533,1347],{"class":249},[103,1535,246],{"class":245},[103,1537,745],{"class":117},[103,1539,1540,1542,1545],{"class":105,"line":353},[103,1541,1515],{"class":151},[103,1543,1544],{"class":155},"existingFiles",[103,1546,1547],{"class":117},"(\n",[103,1549,1550,1553,1556,1559,1562,1564,1567,1569,1571,1573,1575,1578,1580,1582,1584,1586],{"class":105,"line":642},[103,1551,1552],{"class":585},"        fn",[103,1554,1555],{"class":117}," ()",[103,1557,1558],{"class":117}," =>",[103,1560,1561],{"class":148}," ExistingFile",[103,1563,152],{"class":151},[103,1565,1566],{"class":155},"fromMediaLibrary",[103,1568,242],{"class":117},[103,1570,1196],{"class":1005},[103,1572,1404],{"class":113},[103,1574,258],{"class":151},[103,1576,1577],{"class":155},"getMedia",[103,1579,242],{"class":117},[103,1581,246],{"class":245},[103,1583,1347],{"class":249},[103,1585,246],{"class":245},[103,1587,1588],{"class":117},")),\n",[103,1590,1591],{"class":105,"line":668},[103,1592,1593],{"class":117},"    );\n",[88,1595,1596,1597,1600],{},"After validation, ",[100,1598,1599],{},"MediaLibraryUploads::syncCollection()"," can synchronize retained, new, removed, and reordered items. The adapter does not install or configure Media Library and throws a clear exception for incompatible models.",[196,1602,1604],{"id":1603},"clean-expired-uploads","Clean expired uploads",[88,1606,1607],{},"Run cleanup manually or schedule it with Laravel:",[92,1609,1613],{"className":1610,"code":1611,"language":1612,"meta":98,"style":98},"language-bash shiki shiki-themes material-theme-lighter catppuccin-mocha catppuccin-mocha","php artisan form:cleanup-uploads\nphp artisan form:cleanup-uploads --lifetime=7200\n","bash",[100,1614,1615,1626],{"__ignoreMap":98},[103,1616,1617,1620,1623],{"class":105,"line":106},[103,1618,97],{"class":1619},"slOSs",[103,1621,1622],{"class":249}," artisan",[103,1624,1625],{"class":249}," form:cleanup-uploads\n",[103,1627,1628,1630,1632,1635],{"class":105,"line":138},[103,1629,97],{"class":1619},[103,1631,1622],{"class":249},[103,1633,1634],{"class":249}," form:cleanup-uploads",[103,1636,1637],{"class":249}," --lifetime=7200\n",[92,1639,1641],{"className":94,"code":1640,"language":97,"meta":98,"style":98},"use Illuminate\\Support\\Facades\\Schedule;\n\nSchedule::command('form:cleanup-uploads')->hourly();\n",[100,1642,1643,1664,1668],{"__ignoreMap":98},[103,1644,1645,1647,1649,1651,1653,1655,1657,1659,1662],{"class":105,"line":106},[103,1646,110],{"class":109},[103,1648,114],{"class":113},[103,1650,118],{"class":117},[103,1652,121],{"class":113},[103,1654,118],{"class":117},[103,1656,126],{"class":113},[103,1658,118],{"class":117},[103,1660,1661],{"class":131},"Schedule",[103,1663,135],{"class":117},[103,1665,1666],{"class":105,"line":138},[103,1667,142],{"emptyLinePlaceholder":141},[103,1669,1670,1672,1674,1677,1679,1681,1684,1686,1688,1690,1693],{"class":105,"line":145},[103,1671,1661],{"class":148},[103,1673,152],{"class":151},[103,1675,1676],{"class":155},"command",[103,1678,242],{"class":117},[103,1680,246],{"class":245},[103,1682,1683],{"class":249},"form:cleanup-uploads",[103,1685,246],{"class":245},[103,1687,255],{"class":117},[103,1689,258],{"class":151},[103,1691,1692],{"class":155},"hourly",[103,1694,159],{"class":117},[88,1696,1697],{},"Cleanup scans only package-owned directories, aborts expired pending S3 multipart sessions, retains completed direct uploads for the submission-token lifetime, and leaves individual failures retriable.",[1699,1700,1701],"style",{},"html pre.shiki code .scOca, html code.shiki .scOca{--shiki-light:#F76D47;--shiki-default:#CBA6F7;--shiki-dark:#CBA6F7}html pre.shiki code .svMjs, html code.shiki .svMjs{--shiki-light:#90A4AE;--shiki-default:#CDD6F4;--shiki-dark:#CDD6F4}html pre.shiki code .sOG8g, html code.shiki .sOG8g{--shiki-light:#39ADB5;--shiki-default:#9399B2;--shiki-dark:#9399B2}html pre.shiki code .spKqO, html code.shiki .spKqO{--shiki-light:#90A4AE;--shiki-light-font-style:inherit;--shiki-default:#F9E2AF;--shiki-default-font-style:italic;--shiki-dark:#F9E2AF;--shiki-dark-font-style:italic}html pre.shiki code .s6-7G, html code.shiki .s6-7G{--shiki-light:#E2931D;--shiki-light-font-style:inherit;--shiki-default:#F9E2AF;--shiki-default-font-style:italic;--shiki-dark:#F9E2AF;--shiki-dark-font-style:italic}html pre.shiki code .sWTNM, html code.shiki .sWTNM{--shiki-light:#39ADB5;--shiki-default:#94E2D5;--shiki-dark:#94E2D5}html pre.shiki code .sgeHj, html code.shiki .sgeHj{--shiki-light:#6182B8;--shiki-light-font-style:inherit;--shiki-default:#89B4FA;--shiki-default-font-style:italic;--shiki-dark:#89B4FA;--shiki-dark-font-style:italic}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 .sQGZM, html code.shiki .sQGZM{--shiki-light:#39ADB5;--shiki-default:#A6E3A1;--shiki-dark:#A6E3A1}html pre.shiki code .s2lAL, html code.shiki .s2lAL{--shiki-light:#91B859;--shiki-default:#A6E3A1;--shiki-dark:#A6E3A1}html pre.shiki code .sCOdc, html code.shiki .sCOdc{--shiki-light:#F76D47;--shiki-default:#FAB387;--shiki-dark:#FAB387}html pre.shiki code .sgRj0, html code.shiki .sgRj0{--shiki-light:#E53935;--shiki-default:#89B4FA;--shiki-dark:#89B4FA}html pre.shiki code .sGkbZ, html code.shiki .sGkbZ{--shiki-light:#9C3EDA;--shiki-default:#F9E2AF;--shiki-dark:#F9E2AF}html pre.shiki code .su_vF, html code.shiki .su_vF{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#CBA6F7;--shiki-default-font-style:inherit;--shiki-dark:#CBA6F7;--shiki-dark-font-style:inherit}html pre.shiki code .sNFzF, html code.shiki .sNFzF{--shiki-light:#9C3EDA;--shiki-default:#CBA6F7;--shiki-dark:#CBA6F7}html pre.shiki code .sdlML, html code.shiki .sdlML{--shiki-light:#39ADB5;--shiki-default:#89DCEB;--shiki-dark:#89DCEB}html pre.shiki code .s12WM, html code.shiki .s12WM{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EBA0AC;--shiki-default-font-style:italic;--shiki-dark:#EBA0AC;--shiki-dark-font-style:italic}html pre.shiki code .sHTG8, html code.shiki .sHTG8{--shiki-light:#E53935;--shiki-default:#CDD6F4;--shiki-dark:#CDD6F4}html pre.shiki code .sxSEj, html code.shiki .sxSEj{--shiki-light:#39ADB5;--shiki-default:#CDD6F4;--shiki-dark:#CDD6F4}html pre.shiki code .sRLcR, html code.shiki .sRLcR{--shiki-light:#E2931D;--shiki-default:#CDD6F4;--shiki-dark:#CDD6F4}html pre.shiki code .s27pR, html code.shiki .s27pR{--shiki-light:#39ADB5;--shiki-default:#CBA6F7;--shiki-dark:#CBA6F7}html pre.shiki code .slOSs, html code.shiki .slOSs{--shiki-light:#E2931D;--shiki-light-font-style:inherit;--shiki-default:#89B4FA;--shiki-default-font-style:italic;--shiki-dark:#89B4FA;--shiki-dark-font-style:italic}",{"title":98,"searchDepth":138,"depth":138,"links":1703},[1704,1705,1706,1707,1708],{"id":198,"depth":138,"text":199},{"id":494,"depth":138,"text":495},{"id":1182,"depth":138,"text":1183},{"id":1454,"depth":138,"text":1455},{"id":1603,"depth":138,"text":1604},"Configure native, temporary, chunked, and direct uploads without surrendering control of the UI.","md",null,{},{"title":51,"description":1709},"03C3JLMaE7k77OchpggSGuhsiw3YevUqmlMs9zlD8fQ",[1716,1718],{"title":47,"path":48,"stem":49,"description":1717,"children":-1},"Supply inline, query-backed, or remote options and build an application-owned combobox UI.",{"title":55,"path":56,"stem":57,"description":1719,"children":-1},"Connect application-owned editors to structured attachments and tokenized rich-text images.",1786995560669]