[{"data":1,"prerenderedAt":1551},["ShallowReactive",2],{"navigation_docs_hu":3,"-hu-storage-disk-api":449,"-hu-storage-disk-api-surround":1546},[4,45,120,158,174,204,234,260,272,288,308,327,340,357,374,387,399,426],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":44},"Kezdő lépések","i-lucide-rocket","\u002Fhu\u002Fgetting-started","hu\u002F01.getting-started",[10,15,20,25,30,35,40],{"title":11,"path":12,"stem":13,"icon":14},"Bevezetés","\u002Fhu\u002Fgetting-started\u002Fintroduction","hu\u002F01.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Telepítés","\u002Fhu\u002Fgetting-started\u002Finstallation","hu\u002F01.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Az első modulod","\u002Fhu\u002Fgetting-started\u002Ffirst-module","hu\u002F01.getting-started\u002F3.first-module","i-lucide-package-plus",{"title":26,"path":27,"stem":28,"icon":29},"Projektstruktúra","\u002Fhu\u002Fgetting-started\u002Fproject-structure","hu\u002F01.getting-started\u002F4.project-structure","i-lucide-folder-tree",{"title":31,"path":32,"stem":33,"icon":34},"A shop mintaalkalmazás","\u002Fhu\u002Fgetting-started\u002Fsample-app","hu\u002F01.getting-started\u002F5.sample-app","i-lucide-shopping-cart",{"title":36,"path":37,"stem":38,"icon":39},"Laravelből érkezőknek","\u002Fhu\u002Fgetting-started\u002Fcoming-from-laravel","hu\u002F01.getting-started\u002F6.coming-from-laravel","i-lucide-arrow-right-left",{"title":41,"path":42,"stem":43,"icon":39},"Symfonyból érkezőknek","\u002Fhu\u002Fgetting-started\u002Fcoming-from-symfony","hu\u002F01.getting-started\u002F7.coming-from-symfony",false,{"title":46,"icon":47,"path":48,"stem":49,"children":50,"page":44},"CLI referencia","i-lucide-terminal","\u002Fhu\u002Fcli","hu\u002F02.cli",[51,55,60,65,70,75,80,85,90,95,100,105,110,115],{"title":52,"path":53,"stem":54,"icon":47},"Áttekintés","\u002Fhu\u002Fcli\u002Foverview","hu\u002F02.cli\u002F1.overview",{"title":56,"path":57,"stem":58,"icon":59},"add compose \u002F add docker","\u002Fhu\u002Fcli\u002Fadd-compose","hu\u002F02.cli\u002F10.add-compose","i-lucide-container",{"title":61,"path":62,"stem":63,"icon":64},"add mail","\u002Fhu\u002Fcli\u002Fadd-mail","hu\u002F02.cli\u002F11.add-mail","i-lucide-mail-plus",{"title":66,"path":67,"stem":68,"icon":69},"add notification","\u002Fhu\u002Fcli\u002Fadd-notification","hu\u002F02.cli\u002F12.add-notification","i-lucide-bell-plus",{"title":71,"path":72,"stem":73,"icon":74},"add realtime","\u002Fhu\u002Fcli\u002Fadd-realtime","hu\u002F02.cli\u002F13.add-realtime","i-lucide-radio-tower",{"title":76,"path":77,"stem":78,"icon":79},"add seeder","\u002Fhu\u002Fcli\u002Fadd-seeder","hu\u002F02.cli\u002F14.add-seeder","i-lucide-sprout",{"title":81,"path":82,"stem":83,"icon":84},"new project","\u002Fhu\u002Fcli\u002Fnew-project","hu\u002F02.cli\u002F2.new-project","i-lucide-folder-plus",{"title":86,"path":87,"stem":88,"icon":89},"new module","\u002Fhu\u002Fcli\u002Fnew-module","hu\u002F02.cli\u002F3.new-module","i-lucide-blocks",{"title":91,"path":92,"stem":93,"icon":94},"add surface","\u002Fhu\u002Fcli\u002Fadd-surface","hu\u002F02.cli\u002F4.add-surface","i-lucide-layers-2",{"title":96,"path":97,"stem":98,"icon":99},"add domain","\u002Fhu\u002Fcli\u002Fadd-domain","hu\u002F02.cli\u002F5.add-domain","i-lucide-box",{"title":101,"path":102,"stem":103,"icon":104},"add handler","\u002Fhu\u002Fcli\u002Fadd-handler","hu\u002F02.cli\u002F6.add-handler","i-lucide-webhook",{"title":106,"path":107,"stem":108,"icon":109},"new migration","\u002Fhu\u002Fcli\u002Fnew-migration","hu\u002F02.cli\u002F7.new-migration","i-lucide-file-plus",{"title":111,"path":112,"stem":113,"icon":114},"worker generátorok","\u002Fhu\u002Fcli\u002Fworker-generators","hu\u002F02.cli\u002F8.worker-generators","i-lucide-cog",{"title":116,"path":117,"stem":118,"icon":119},"add db","\u002Fhu\u002Fcli\u002Fadd-db","hu\u002F02.cli\u002F9.add-db","i-lucide-database-zap",{"title":121,"icon":99,"path":122,"stem":123,"children":124,"page":44},"A framework","\u002Fhu\u002Fframework","hu\u002F03.framework",[125,129,134,139,143,148,153],{"title":126,"path":127,"stem":128,"icon":99},"A framework áttekintése","\u002Fhu\u002Fframework\u002Foverview","hu\u002F03.framework\u002F1.overview",{"title":130,"path":131,"stem":132,"icon":133},"Alkalmazás-életciklus","\u002Fhu\u002Fframework\u002Fapp","hu\u002F03.framework\u002F2.app","i-lucide-power",{"title":135,"path":136,"stem":137,"icon":138},"Szerver","\u002Fhu\u002Fframework\u002Fserver","hu\u002F03.framework\u002F3.server","i-lucide-server",{"title":140,"path":141,"stem":142,"icon":114},"Worker","\u002Fhu\u002Fframework\u002Fworker","hu\u002F03.framework\u002F4.worker",{"title":144,"path":145,"stem":146,"icon":147},"Realtime","\u002Fhu\u002Fframework\u002Frealtime","hu\u002F03.framework\u002F5.realtime","i-lucide-radio",{"title":149,"path":150,"stem":151,"icon":152},"Migrációk","\u002Fhu\u002Fframework\u002Fmigrations","hu\u002F03.framework\u002F6.migrations","i-lucide-file-stack",{"title":154,"path":155,"stem":156,"icon":157},"Social login","\u002Fhu\u002Fframework\u002Fsocial-login","hu\u002F03.framework\u002F7.social-login","i-lucide-log-in",{"title":159,"icon":160,"path":161,"stem":162,"children":163,"page":44},"Referencia","i-lucide-book-open","\u002Fhu\u002Freference","hu\u002F04.reference",[164,169],{"title":165,"path":166,"stem":167,"icon":168},"Konfiguráció","\u002Fhu\u002Freference\u002Fconfiguration","hu\u002F04.reference\u002F1.configuration","i-lucide-settings",{"title":170,"path":171,"stem":172,"icon":173},"Külső függőségek","\u002Fhu\u002Freference\u002Fdependencies","hu\u002F04.reference\u002F2.dependencies","i-lucide-package",{"title":175,"icon":176,"path":177,"stem":178,"children":179,"page":44},"Koncepciók","i-lucide-lightbulb","\u002Fhu\u002Fconcepts","hu\u002F05.concepts",[180,185,190,194,199],{"title":181,"path":182,"stem":183,"icon":184},"Architektúra","\u002Fhu\u002Fconcepts\u002Farchitecture","hu\u002F05.concepts\u002F1.architecture","i-lucide-layers",{"title":186,"path":187,"stem":188,"icon":189},"Hibamodell","\u002Fhu\u002Fconcepts\u002Ferror-model","hu\u002F05.concepts\u002F2.error-model","i-lucide-shield-alert",{"title":165,"path":191,"stem":192,"icon":193},"\u002Fhu\u002Fconcepts\u002Fconfiguration","hu\u002F05.concepts\u002F3.configuration","i-lucide-settings-2",{"title":195,"path":196,"stem":197,"icon":198},"Codegen pipeline","\u002Fhu\u002Fconcepts\u002Fcodegen-pipeline","hu\u002F05.concepts\u002F4.codegen-pipeline","i-lucide-file-json",{"title":200,"path":201,"stem":202,"icon":203},"Design patternek","\u002Fhu\u002Fconcepts\u002Fdesign-patterns","hu\u002F05.concepts\u002F5.design-patterns","i-lucide-puzzle",{"title":205,"icon":206,"path":207,"stem":208,"children":209,"page":44},"auth","i-lucide-shield-check","\u002Fhu\u002Fauth","hu\u002F06.auth",[210,215,220,225,230],{"title":211,"path":212,"stem":213,"icon":214},"Autentikáció","\u002Fhu\u002Fauth\u002Foverview","hu\u002F06.auth\u002F1.overview","i-lucide-key-round",{"title":216,"path":217,"stem":218,"icon":219},"RBAC","\u002Fhu\u002Fauth\u002Frbac","hu\u002F06.auth\u002F2.rbac","i-lucide-users",{"title":221,"path":222,"stem":223,"icon":224},"Policy-k","\u002Fhu\u002Fauth\u002Fpolicy","hu\u002F06.auth\u002F3.policy","i-lucide-gavel",{"title":226,"path":227,"stem":228,"icon":229},"Az auth önálló használata","\u002Fhu\u002Fauth\u002Fstandalone","hu\u002F06.auth\u002F4.standalone","i-lucide-plug",{"title":231,"path":232,"stem":233,"icon":157},"Social login goth-tal, önállóan","\u002Fhu\u002Fauth\u002Fsocial-standalone","hu\u002F06.auth\u002F5.social-standalone",{"title":235,"icon":236,"path":237,"stem":238,"children":239,"page":44},"dbx","i-lucide-database","\u002Fhu\u002Fdbx","hu\u002F07.dbx",[240,243,247,251,256],{"title":52,"path":241,"stem":242,"icon":236},"\u002Fhu\u002Fdbx\u002Foverview","hu\u002F07.dbx\u002F1.overview",{"title":244,"path":245,"stem":246,"icon":229},"pgx","\u002Fhu\u002Fdbx\u002Fpg","hu\u002F07.dbx\u002F2.pg",{"title":248,"path":249,"stem":250,"icon":184},"bun","\u002Fhu\u002Fdbx\u002Fbunx","hu\u002F07.dbx\u002F3.bunx",{"title":252,"path":253,"stem":254,"icon":255},"Tranzakciók","\u002Fhu\u002Fdbx\u002Ftransactions","hu\u002F07.dbx\u002F4.transactions","i-lucide-git-merge",{"title":257,"path":258,"stem":259,"icon":79},"Seederek","\u002Fhu\u002Fdbx\u002Fseed","hu\u002F07.dbx\u002F5.seed",{"title":261,"icon":193,"path":262,"stem":263,"children":264,"page":44},"envconf","\u002Fhu\u002Fenvconf","hu\u002F08.envconf",[265,268],{"title":52,"path":266,"stem":267,"icon":193},"\u002Fhu\u002Fenvconf\u002Foverview","hu\u002F08.envconf\u002F1.overview",{"title":269,"path":270,"stem":271,"icon":193},"Receptek","\u002Fhu\u002Fenvconf\u002Frecipes","hu\u002F08.envconf\u002F2.recipes",{"title":273,"icon":189,"path":274,"stem":275,"children":276,"page":44},"errs","\u002Fhu\u002Ferrs","hu\u002F09.errs",[277,280,284],{"title":52,"path":278,"stem":279,"icon":189},"\u002Fhu\u002Ferrs\u002Foverview","hu\u002F09.errs\u002F1.overview",{"title":281,"path":282,"stem":283,"icon":189},"API","\u002Fhu\u002Ferrs\u002Fapi","hu\u002F09.errs\u002F2.api",{"title":285,"path":286,"stem":287,"icon":189},"Integráció","\u002Fhu\u002Ferrs\u002Fintegration","hu\u002F09.errs\u002F3.integration",{"title":289,"icon":290,"path":291,"stem":292,"children":293,"page":44},"events","i-lucide-workflow","\u002Fhu\u002Fevents","hu\u002F10.events",[294,298,303],{"title":295,"path":296,"stem":297,"icon":147},"Események","\u002Fhu\u002Fevents\u002Foverview","hu\u002F10.events\u002F1.overview",{"title":299,"path":300,"stem":301,"icon":302},"Outbox","\u002Fhu\u002Fevents\u002Foutbox","hu\u002F10.events\u002F2.outbox","i-lucide-inbox",{"title":304,"path":305,"stem":306,"icon":307},"Ütemezés","\u002Fhu\u002Fevents\u002Fscheduler","hu\u002F10.events\u002F3.scheduler","i-lucide-calendar-clock",{"title":309,"icon":310,"path":311,"stem":312,"children":313,"page":44},"httperr","i-lucide-globe","\u002Fhu\u002Fhttperr","hu\u002F11.httperr",[314,317,322],{"title":52,"path":315,"stem":316,"icon":310},"\u002Fhu\u002Fhttperr\u002Foverview","hu\u002F11.httperr\u002F1.overview",{"title":318,"path":319,"stem":320,"icon":321},"Hibaválaszok","\u002Fhu\u002Fhttperr\u002Ferror-responses","hu\u002F11.httperr\u002F2.error-responses","i-lucide-octagon-alert",{"title":323,"path":324,"stem":325,"icon":326},"Validáció","\u002Fhu\u002Fhttperr\u002Fvalidation","hu\u002F11.httperr\u002F3.validation","i-lucide-badge-check",{"title":328,"icon":329,"path":330,"stem":331,"children":332,"page":44},"logx","i-lucide-scroll-text","\u002Fhu\u002Flogx","hu\u002F12.logx",[333,336],{"title":52,"path":334,"stem":335,"icon":329},"\u002Fhu\u002Flogx\u002Foverview","hu\u002F12.logx\u002F1.overview",{"title":337,"path":338,"stem":339,"icon":47},"Monolog-formázó","\u002Fhu\u002Flogx\u002Fmonolog","hu\u002F12.logx\u002F2.monolog",{"title":341,"icon":342,"path":343,"stem":344,"children":345,"page":44},"mail","i-lucide-mail","\u002Fhu\u002Fmail","hu\u002F13.mail",[346,349,353],{"title":52,"path":347,"stem":348,"icon":342},"\u002Fhu\u002Fmail\u002Foverview","hu\u002F13.mail\u002F1.overview",{"title":350,"path":351,"stem":352,"icon":342},"SMTP","\u002Fhu\u002Fmail\u002Fsmtp","hu\u002F13.mail\u002F2.smtp",{"title":354,"path":355,"stem":356,"icon":342},"MJML","\u002Fhu\u002Fmail\u002Fmjml","hu\u002F13.mail\u002F3.mjml",{"title":358,"icon":359,"path":360,"stem":361,"children":362,"page":44},"notify","i-lucide-bell","\u002Fhu\u002Fnotify","hu\u002F14.notify",[363,366,370],{"title":52,"path":364,"stem":365,"icon":359},"\u002Fhu\u002Fnotify\u002Foverview","hu\u002F14.notify\u002F1.overview",{"title":367,"path":368,"stem":369,"icon":359},"Database csatorna","\u002Fhu\u002Fnotify\u002Fdatabase","hu\u002F14.notify\u002F2.database",{"title":371,"path":372,"stem":373,"icon":359},"Broadcast csatorna","\u002Fhu\u002Fnotify\u002Fbroadcast","hu\u002F14.notify\u002F3.broadcast",{"title":375,"icon":376,"path":377,"stem":378,"children":379,"page":44},"paginate","i-lucide-list-ordered","\u002Fhu\u002Fpaginate","hu\u002F15.paginate",[380,383],{"title":52,"path":381,"stem":382,"icon":376},"\u002Fhu\u002Fpaginate\u002Foverview","hu\u002F15.paginate\u002F1.overview",{"title":384,"path":385,"stem":386,"icon":39},"Cursor-lapozás","\u002Fhu\u002Fpaginate\u002Fcursor","hu\u002F15.paginate\u002F2.cursor",{"title":388,"icon":184,"path":389,"stem":390,"children":391,"page":44},"queue","\u002Fhu\u002Fqueue","hu\u002F16.queue",[392,395],{"title":52,"path":393,"stem":394,"icon":376},"\u002Fhu\u002Fqueue\u002Foverview","hu\u002F16.queue\u002F1.overview",{"title":396,"path":397,"stem":398,"icon":184},"Taskok","\u002Fhu\u002Fqueue\u002Ftasks","hu\u002F16.queue\u002F2.tasks",{"title":400,"icon":401,"path":402,"stem":403,"children":404,"page":44},"storage","i-lucide-hard-drive","\u002Fhu\u002Fstorage","hu\u002F17.storage",[405,408,412,416,421],{"title":52,"path":406,"stem":407,"icon":401},"\u002Fhu\u002Fstorage\u002Foverview","hu\u002F17.storage\u002F1.overview",{"title":409,"path":410,"stem":411,"icon":401},"Disk API","\u002Fhu\u002Fstorage\u002Fdisk-api","hu\u002F17.storage\u002F2.disk-api",{"title":413,"path":414,"stem":415,"icon":401},"Memória és helyi lemez","\u002Fhu\u002Fstorage\u002Flocal","hu\u002F17.storage\u002F3.local",{"title":417,"path":418,"stem":419,"icon":420},"S3","\u002Fhu\u002Fstorage\u002Fs3","hu\u002F17.storage\u002F4.s3","i-lucide-cloud",{"title":422,"path":423,"stem":424,"icon":425},"Tesztelés","\u002Fhu\u002Fstorage\u002Ftesting","hu\u002F17.storage\u002F5.testing","i-lucide-flask-conical",{"title":427,"icon":428,"path":429,"stem":430,"children":431,"page":44},"telemetry","i-lucide-activity","\u002Fhu\u002Ftelemetry","hu\u002F18.telemetry",[432,435,439,444],{"title":52,"path":433,"stem":434,"icon":428},"\u002Fhu\u002Ftelemetry\u002Foverview","hu\u002F18.telemetry\u002F1.overview",{"title":436,"path":437,"stem":438,"icon":329},"Logolás","\u002Fhu\u002Ftelemetry\u002Flogging","hu\u002F18.telemetry\u002F2.logging",{"title":440,"path":441,"stem":442,"icon":443},"OpenTelemetry","\u002Fhu\u002Ftelemetry\u002Fopentelemetry","hu\u002F18.telemetry\u002F3.opentelemetry","i-lucide-radar",{"title":445,"path":446,"stem":447,"icon":448},"Sentry","\u002Fhu\u002Ftelemetry\u002Fsentry","hu\u002F18.telemetry\u002F4.sentry","i-lucide-bug",{"id":450,"title":409,"body":451,"description":1539,"extension":1540,"links":1541,"meta":1542,"navigation":1543,"path":410,"seo":1544,"stem":411,"__hash__":1545},"docs_hu\u002Fhu\u002F17.storage\u002F2.disk-api.md",{"type":452,"value":453,"toc":1531},"minimark",[454,487,492,621,653,657,887,923,927,989,1008,1015,1124,1143,1147,1250,1278,1282,1471,1493,1497,1527],[455,456,457,458,462,463,470,471,474,475,478,479,482,483,486],"p",{},"A ",[459,460,461],"code",{},"Disk"," (a ",[464,465,467],"a",{"href":466},"\u002Fhu\u002Fstorage\u002Foverview#disk-az-api-amit-tenylegesen-hivsz",[459,468,469],{},"storage.NewDisk"," eredménye) az a típus, amitől a service-kód függ; a ",[459,472,473],{},"main.go","-n kívül senkinek nem kell tudnia, milyen ",[459,476,477],{},"Driver"," áll mögötte. Minden metódus egy ",[459,480,481],{},"context.Context","-et és egy per-jellel tagolt ",[459,484,485],{},"path","-ot kap, és minden hívás egy tracelt OTel span, így egy lassú feltöltés ott jelenik meg a trace waterfallban, közvetlenül a hozzá közeli DB-lekérdezések mellett.",[488,489,491],"h2",{"id":490},"írások","Írások",[493,494,499],"pre",{"className":495,"code":496,"language":497,"meta":498,"style":498},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","err := disk.Put(ctx, \"avatars\u002F42.png\", r, storage.PutOptions{ContentType: \"image\u002Fpng\"})\nerr := disk.PutBytes(ctx, \"reports\u002F2026-07.csv\", data, storage.PutOptions{})\n","go","",[459,500,501,578],{"__ignoreMap":498},[502,503,506,510,514,517,520,524,527,530,533,536,540,543,545,548,550,554,556,559,562,565,568,570,573,575],"span",{"class":504,"line":505},"line",1,[502,507,509],{"class":508},"sTEyZ","err ",[502,511,513],{"class":512},"sMK4o",":=",[502,515,516],{"class":508}," disk",[502,518,519],{"class":512},".",[502,521,523],{"class":522},"s2Zo4","Put",[502,525,526],{"class":512},"(",[502,528,529],{"class":508},"ctx",[502,531,532],{"class":512},",",[502,534,535],{"class":512}," \"",[502,537,539],{"class":538},"sfazB","avatars\u002F42.png",[502,541,542],{"class":512},"\"",[502,544,532],{"class":512},[502,546,547],{"class":508}," r",[502,549,532],{"class":512},[502,551,553],{"class":552},"sBMFI"," storage",[502,555,519],{"class":512},[502,557,558],{"class":552},"PutOptions",[502,560,561],{"class":512},"{",[502,563,564],{"class":508},"ContentType",[502,566,567],{"class":512},":",[502,569,535],{"class":512},[502,571,572],{"class":538},"image\u002Fpng",[502,574,542],{"class":512},[502,576,577],{"class":512},"})\n",[502,579,581,583,585,587,589,592,594,596,598,600,603,605,607,610,612,614,616,618],{"class":504,"line":580},2,[502,582,509],{"class":508},[502,584,513],{"class":512},[502,586,516],{"class":508},[502,588,519],{"class":512},[502,590,591],{"class":522},"PutBytes",[502,593,526],{"class":512},[502,595,529],{"class":508},[502,597,532],{"class":512},[502,599,535],{"class":512},[502,601,602],{"class":538},"reports\u002F2026-07.csv",[502,604,542],{"class":512},[502,606,532],{"class":512},[502,608,609],{"class":508}," data",[502,611,532],{"class":512},[502,613,553],{"class":552},[502,615,519],{"class":512},[502,617,558],{"class":552},[502,619,620],{"class":512},"{})\n",[455,622,457,623,625,626,629,630,632,633,636,637,640,641,643,644,646,647,652],{},[459,624,523],{}," egy ",[459,627,628],{},"io.Reader","-ből streamel, így egy nagy feltöltés sosem ül teljesen a memóriában. A ",[459,631,591],{}," a kényelmi forma olyan adathoz, ami már ",[459,634,635],{},"[]byte","-ként a kezedben van (egy generált riport, egy kis memóriabeli buffer): egy ",[459,638,639],{},"bytes.Reader","-t csomagol be, és a ",[459,642,523],{},"-ot hívja. A ",[459,645,558],{}," hordozza azt a metaadatot, amire egy driver reagálhat (content type, és bármi más, amit egy konkrét driver opciói támogatnak); egy driver, ami ennek egy részét nem őrzi meg, attól még érvényes, csak kevésbé képes implementáció, és a ",[464,648,649],{"href":423},[459,650,651],{},"storagetest"," segít eldönteni, hogy megőrzi-e.",[488,654,656],{"id":655},"olvasások","Olvasások",[493,658,660],{"className":495,"code":659,"language":497,"meta":498,"style":498},"b, err := disk.Get(ctx, \"avatars\u002F42.png\")               \u002F\u002F a teljes objektum, memóriába\nrc, err := disk.Reader(ctx, \"avatars\u002F42.png\")           \u002F\u002F streamelt; a hívónak kell Close()-olnia\nrc, err := disk.RangeReader(ctx, \"video.mp4\", 0, 1\u003C\u003C20) \u002F\u002F csak az első MiB\n\ninfo, err := disk.Stat(ctx, \"avatars\u002F42.png\")\nok := disk.Exists(ctx, \"avatars\u002F42.png\")\nmissing := disk.Missing(ctx, \"avatars\u002F42.png\")\n",[459,661,662,700,735,788,795,829,858],{"__ignoreMap":498},[502,663,664,667,669,672,674,676,678,681,683,685,687,689,691,693,696],{"class":504,"line":505},[502,665,666],{"class":508},"b",[502,668,532],{"class":512},[502,670,671],{"class":508}," err ",[502,673,513],{"class":512},[502,675,516],{"class":508},[502,677,519],{"class":512},[502,679,680],{"class":522},"Get",[502,682,526],{"class":512},[502,684,529],{"class":508},[502,686,532],{"class":512},[502,688,535],{"class":512},[502,690,539],{"class":538},[502,692,542],{"class":512},[502,694,695],{"class":512},")",[502,697,699],{"class":698},"sHwdD","               \u002F\u002F a teljes objektum, memóriába\n",[502,701,702,705,707,709,711,713,715,718,720,722,724,726,728,730,732],{"class":504,"line":580},[502,703,704],{"class":508},"rc",[502,706,532],{"class":512},[502,708,671],{"class":508},[502,710,513],{"class":512},[502,712,516],{"class":508},[502,714,519],{"class":512},[502,716,717],{"class":522},"Reader",[502,719,526],{"class":512},[502,721,529],{"class":508},[502,723,532],{"class":512},[502,725,535],{"class":512},[502,727,539],{"class":538},[502,729,542],{"class":512},[502,731,695],{"class":512},[502,733,734],{"class":698},"           \u002F\u002F streamelt; a hívónak kell Close()-olnia\n",[502,736,738,740,742,744,746,748,750,753,755,757,759,761,764,766,768,772,774,777,780,783,785],{"class":504,"line":737},3,[502,739,704],{"class":508},[502,741,532],{"class":512},[502,743,671],{"class":508},[502,745,513],{"class":512},[502,747,516],{"class":508},[502,749,519],{"class":512},[502,751,752],{"class":522},"RangeReader",[502,754,526],{"class":512},[502,756,529],{"class":508},[502,758,532],{"class":512},[502,760,535],{"class":512},[502,762,763],{"class":538},"video.mp4",[502,765,542],{"class":512},[502,767,532],{"class":512},[502,769,771],{"class":770},"sbssI"," 0",[502,773,532],{"class":512},[502,775,776],{"class":770}," 1",[502,778,779],{"class":512},"\u003C\u003C",[502,781,782],{"class":770},"20",[502,784,695],{"class":512},[502,786,787],{"class":698}," \u002F\u002F csak az első MiB\n",[502,789,791],{"class":504,"line":790},4,[502,792,794],{"emptyLinePlaceholder":793},true,"\n",[502,796,798,801,803,805,807,809,811,814,816,818,820,822,824,826],{"class":504,"line":797},5,[502,799,800],{"class":508},"info",[502,802,532],{"class":512},[502,804,671],{"class":508},[502,806,513],{"class":512},[502,808,516],{"class":508},[502,810,519],{"class":512},[502,812,813],{"class":522},"Stat",[502,815,526],{"class":512},[502,817,529],{"class":508},[502,819,532],{"class":512},[502,821,535],{"class":512},[502,823,539],{"class":538},[502,825,542],{"class":512},[502,827,828],{"class":512},")\n",[502,830,832,835,837,839,841,844,846,848,850,852,854,856],{"class":504,"line":831},6,[502,833,834],{"class":508},"ok ",[502,836,513],{"class":512},[502,838,516],{"class":508},[502,840,519],{"class":512},[502,842,843],{"class":522},"Exists",[502,845,526],{"class":512},[502,847,529],{"class":508},[502,849,532],{"class":512},[502,851,535],{"class":512},[502,853,539],{"class":538},[502,855,542],{"class":512},[502,857,828],{"class":512},[502,859,861,864,866,868,870,873,875,877,879,881,883,885],{"class":504,"line":860},7,[502,862,863],{"class":508},"missing ",[502,865,513],{"class":512},[502,867,516],{"class":508},[502,869,519],{"class":512},[502,871,872],{"class":522},"Missing",[502,874,526],{"class":512},[502,876,529],{"class":508},[502,878,532],{"class":512},[502,880,535],{"class":512},[502,882,539],{"class":538},[502,884,542],{"class":512},[502,886,828],{"class":512},[455,888,457,889,891,892,894,895,625,897,900,901,904,905,625,907,910,911,913,914,916,917,919,920,922],{},[459,890,680],{}," a kényelmi forma kis objektumokhoz: az egészet memóriába olvassa, és helyetted zárja a readert. Bármi nagyobbhoz a ",[459,893,717],{}," streamel, és a hívó felelőssége a lezárás. A ",[459,896,752],{},[459,898,899],{},"[offset, offset+length)"," bájttartományt nyit meg, folytatható letöltésekhez vagy HTTP ",[459,902,903],{},"Range","-kérések kiszolgálásához az egész objektum beolvasása nélkül. A ",[459,906,813],{},[459,908,909],{},"FileInfo","-t ad vissza (méret, content type, utolsó módosítás ideje és társai) a törzs átvitele nélkül: egy HEAD-jellegű ellenőrzés. Az ",[459,912,843],{},"\u002F",[459,915,872],{}," boolean kényelmi metódusok ugyanarra a hívásra, arra a gyakori esetre, amikor csak az érdekel, ott van-e az objektum, nem a metaadata; egy valódi backend-hiba az alatta lévő ",[459,918,813],{},"-ból \"nem megerősítetten létezőként\" kezelődik, nem panicol és nem terjed csendben tovább, úgyhogy ha meg kell különböztetned a \"hiányzik\"-ot a \"storage elérhetetlen\"-től, hívd közvetlenül a ",[459,921,813],{},"-ot.",[488,924,926],{"id":925},"listázás","Listázás",[493,928,930],{"className":495,"code":929,"language":497,"meta":498,"style":498},"page, err := disk.List(ctx, storage.ListOptions{Prefix: \"avatars\u002F\", After: cursor})\n",[459,931,932],{"__ignoreMap":498},[502,933,934,937,939,941,943,945,947,950,952,954,956,958,960,963,965,968,970,972,975,977,979,982,984,987],{"class":504,"line":505},[502,935,936],{"class":508},"page",[502,938,532],{"class":512},[502,940,671],{"class":508},[502,942,513],{"class":512},[502,944,516],{"class":508},[502,946,519],{"class":512},[502,948,949],{"class":522},"List",[502,951,526],{"class":512},[502,953,529],{"class":508},[502,955,532],{"class":512},[502,957,553],{"class":552},[502,959,519],{"class":512},[502,961,962],{"class":552},"ListOptions",[502,964,561],{"class":512},[502,966,967],{"class":508},"Prefix",[502,969,567],{"class":512},[502,971,535],{"class":512},[502,973,974],{"class":538},"avatars\u002F",[502,976,542],{"class":512},[502,978,532],{"class":512},[502,980,981],{"class":508}," After",[502,983,567],{"class":512},[502,985,986],{"class":508}," cursor",[502,988,577],{"class":512},[455,990,457,991,993,994,997,998,1000,1001,913,1004,1007],{},[459,992,949],{}," a ",[459,995,996],{},"ListOptions.Prefix"," alatti ",[459,999,909],{},"-k egy lapját adja vissza, a ",[459,1002,1003],{},"ListOptions.After",[459,1005,1006],{},"ListPage.ContinuationToken"," viszi a következő lapra: reconciliation- és GC-sweepekhez való, nem kiszolgáló code path-okhoz, objektumonként egyesével.",[455,1009,1010,1011,1014],{},"Ha egy teljes prefixet be akarsz járni a lapozási ciklus kézi megírása nélkül, a ",[459,1012,1013],{},"Files"," egy Go 1.23+ range-over-func iterátor:",[493,1016,1018],{"className":495,"code":1017,"language":497,"meta":498,"style":498},"for info, err := range disk.Files(ctx, \"avatars\u002F\") {\n    if err != nil {\n        return err\n    }\n    fmt.Println(info.Path, info.Size)\n}\n",[459,1019,1020,1061,1076,1084,1089,1119],{"__ignoreMap":498},[502,1021,1022,1026,1029,1031,1033,1035,1038,1040,1042,1044,1046,1048,1050,1052,1054,1056,1058],{"class":504,"line":505},[502,1023,1025],{"class":1024},"s7zQu","for",[502,1027,1028],{"class":508}," info",[502,1030,532],{"class":512},[502,1032,671],{"class":508},[502,1034,513],{"class":512},[502,1036,1037],{"class":1024}," range",[502,1039,516],{"class":508},[502,1041,519],{"class":512},[502,1043,1013],{"class":522},[502,1045,526],{"class":512},[502,1047,529],{"class":508},[502,1049,532],{"class":512},[502,1051,535],{"class":512},[502,1053,974],{"class":538},[502,1055,542],{"class":512},[502,1057,695],{"class":512},[502,1059,1060],{"class":512}," {\n",[502,1062,1063,1066,1068,1071,1074],{"class":504,"line":580},[502,1064,1065],{"class":1024},"    if",[502,1067,671],{"class":508},[502,1069,1070],{"class":512},"!=",[502,1072,1073],{"class":512}," nil",[502,1075,1060],{"class":512},[502,1077,1078,1081],{"class":504,"line":737},[502,1079,1080],{"class":1024},"        return",[502,1082,1083],{"class":508}," err\n",[502,1085,1086],{"class":504,"line":790},[502,1087,1088],{"class":512},"    }\n",[502,1090,1091,1094,1096,1099,1101,1103,1105,1108,1110,1112,1114,1117],{"class":504,"line":797},[502,1092,1093],{"class":508},"    fmt",[502,1095,519],{"class":512},[502,1097,1098],{"class":522},"Println",[502,1100,526],{"class":512},[502,1102,800],{"class":508},[502,1104,519],{"class":512},[502,1106,1107],{"class":508},"Path",[502,1109,532],{"class":512},[502,1111,1028],{"class":508},[502,1113,519],{"class":512},[502,1115,1116],{"class":508},"Size",[502,1118,828],{"class":512},[502,1120,1121],{"class":504,"line":831},[502,1122,1123],{"class":512},"}\n",[455,1125,457,1126,1128,1129,1131,1132,1134,1135,1138,1139,1142],{},[459,1127,1013],{}," belül a ",[459,1130,949],{},"-en lapoz végig, és egyesével adja a ",[459,1133,909],{},"-kat; a ciklusból való korai kilépés (",[459,1136,1137],{},"break",", ",[459,1140,1141],{},"return",") egyszerűen leállítja a további lapok lekérését.",[488,1144,1146],{"id":1145},"copy-delete-move","Copy, Delete, Move",[493,1148,1150],{"className":495,"code":1149,"language":497,"meta":498,"style":498},"err := disk.Copy(ctx, \"uploads\u002Fstaging\u002Fx.png\", \"avatars\u002F42.png\")\nerr := disk.Delete(ctx, \"uploads\u002Fstaging\u002Fx.png\")\nerr := disk.Move(ctx, \"uploads\u002Fstaging\u002Fx.png\", \"avatars\u002F42.png\")\n",[459,1151,1152,1188,1215],{"__ignoreMap":498},[502,1153,1154,1156,1158,1160,1162,1165,1167,1169,1171,1173,1176,1178,1180,1182,1184,1186],{"class":504,"line":505},[502,1155,509],{"class":508},[502,1157,513],{"class":512},[502,1159,516],{"class":508},[502,1161,519],{"class":512},[502,1163,1164],{"class":522},"Copy",[502,1166,526],{"class":512},[502,1168,529],{"class":508},[502,1170,532],{"class":512},[502,1172,535],{"class":512},[502,1174,1175],{"class":538},"uploads\u002Fstaging\u002Fx.png",[502,1177,542],{"class":512},[502,1179,532],{"class":512},[502,1181,535],{"class":512},[502,1183,539],{"class":538},[502,1185,542],{"class":512},[502,1187,828],{"class":512},[502,1189,1190,1192,1194,1196,1198,1201,1203,1205,1207,1209,1211,1213],{"class":504,"line":580},[502,1191,509],{"class":508},[502,1193,513],{"class":512},[502,1195,516],{"class":508},[502,1197,519],{"class":512},[502,1199,1200],{"class":522},"Delete",[502,1202,526],{"class":512},[502,1204,529],{"class":508},[502,1206,532],{"class":512},[502,1208,535],{"class":512},[502,1210,1175],{"class":538},[502,1212,542],{"class":512},[502,1214,828],{"class":512},[502,1216,1217,1219,1221,1223,1225,1228,1230,1232,1234,1236,1238,1240,1242,1244,1246,1248],{"class":504,"line":737},[502,1218,509],{"class":508},[502,1220,513],{"class":512},[502,1222,516],{"class":508},[502,1224,519],{"class":512},[502,1226,1227],{"class":522},"Move",[502,1229,526],{"class":512},[502,1231,529],{"class":508},[502,1233,532],{"class":512},[502,1235,535],{"class":512},[502,1237,1175],{"class":538},[502,1239,542],{"class":512},[502,1241,532],{"class":512},[502,1243,535],{"class":512},[502,1245,539],{"class":538},[502,1247,542],{"class":512},[502,1249,828],{"class":512},[455,1251,457,1252,1254,1255,1257,1258,1260,1261,1264,1265,1268,1269,1271,1272,1274,1275,1277],{},[459,1253,1164],{}," szerver-oldali másolás ott, ahol a driver támogatja, anélkül hogy a bájtok átfolynának a processzeden. A ",[459,1256,1200],{}," idempotens: egy nem létező path törlése nem hiba. A ",[459,1259,1227],{}," a driver natív mozgatását használja, ha az implementálja az opcionális ",[459,1262,1263],{},"Mover"," interfészt (lásd ",[464,1266,52],{"href":1267},"\u002Fhu\u002Fstorage\u002Foverview#driver-a-backend-szerz%C5%91d%C3%A9s","); egyébként a ",[459,1270,461],{}," maga csinál ",[459,1273,1164],{},"-t majd ",[459,1276,1200],{},"-et, így a hívónak sosem kell tudnia, melyik esetben van.",[488,1279,1281],{"id":1280},"url-ek","URL-ek",[493,1283,1285],{"className":495,"code":1284,"language":497,"meta":498,"style":498},"url, err := disk.URL(ctx, \"avatars\u002F42.png\")\nsigned, err := disk.TemporaryURL(ctx, \"exports\u002Forders.csv\", storage.TemporaryURLOptions{TTL: 15 * time.Minute})\nupload, err := disk.TemporaryUploadURL(ctx, \"uploads\u002F42.png\", storage.TemporaryUploadURLOptions{TTL: 5 * time.Minute})\n\nif disk.ProvidesTemporaryURLs() {\n    \u002F\u002F biztonságos közvetlen storage-hoz-download\u002Fupload linkeket kínálni\n}\n",[459,1286,1287,1319,1382,1441,1445,1462,1467],{"__ignoreMap":498},[502,1288,1289,1292,1294,1296,1298,1300,1302,1305,1307,1309,1311,1313,1315,1317],{"class":504,"line":505},[502,1290,1291],{"class":508},"url",[502,1293,532],{"class":512},[502,1295,671],{"class":508},[502,1297,513],{"class":512},[502,1299,516],{"class":508},[502,1301,519],{"class":512},[502,1303,1304],{"class":522},"URL",[502,1306,526],{"class":512},[502,1308,529],{"class":508},[502,1310,532],{"class":512},[502,1312,535],{"class":512},[502,1314,539],{"class":538},[502,1316,542],{"class":512},[502,1318,828],{"class":512},[502,1320,1321,1324,1326,1328,1330,1332,1334,1337,1339,1341,1343,1345,1348,1350,1352,1354,1356,1359,1361,1364,1366,1369,1372,1375,1377,1380],{"class":504,"line":580},[502,1322,1323],{"class":508},"signed",[502,1325,532],{"class":512},[502,1327,671],{"class":508},[502,1329,513],{"class":512},[502,1331,516],{"class":508},[502,1333,519],{"class":512},[502,1335,1336],{"class":522},"TemporaryURL",[502,1338,526],{"class":512},[502,1340,529],{"class":508},[502,1342,532],{"class":512},[502,1344,535],{"class":512},[502,1346,1347],{"class":538},"exports\u002Forders.csv",[502,1349,542],{"class":512},[502,1351,532],{"class":512},[502,1353,553],{"class":552},[502,1355,519],{"class":512},[502,1357,1358],{"class":552},"TemporaryURLOptions",[502,1360,561],{"class":512},[502,1362,1363],{"class":508},"TTL",[502,1365,567],{"class":512},[502,1367,1368],{"class":770}," 15",[502,1370,1371],{"class":512}," *",[502,1373,1374],{"class":508}," time",[502,1376,519],{"class":512},[502,1378,1379],{"class":508},"Minute",[502,1381,577],{"class":512},[502,1383,1384,1387,1389,1391,1393,1395,1397,1400,1402,1404,1406,1408,1411,1413,1415,1417,1419,1422,1424,1426,1428,1431,1433,1435,1437,1439],{"class":504,"line":737},[502,1385,1386],{"class":508},"upload",[502,1388,532],{"class":512},[502,1390,671],{"class":508},[502,1392,513],{"class":512},[502,1394,516],{"class":508},[502,1396,519],{"class":512},[502,1398,1399],{"class":522},"TemporaryUploadURL",[502,1401,526],{"class":512},[502,1403,529],{"class":508},[502,1405,532],{"class":512},[502,1407,535],{"class":512},[502,1409,1410],{"class":538},"uploads\u002F42.png",[502,1412,542],{"class":512},[502,1414,532],{"class":512},[502,1416,553],{"class":552},[502,1418,519],{"class":512},[502,1420,1421],{"class":552},"TemporaryUploadURLOptions",[502,1423,561],{"class":512},[502,1425,1363],{"class":508},[502,1427,567],{"class":512},[502,1429,1430],{"class":770}," 5",[502,1432,1371],{"class":512},[502,1434,1374],{"class":508},[502,1436,519],{"class":512},[502,1438,1379],{"class":508},[502,1440,577],{"class":512},[502,1442,1443],{"class":504,"line":790},[502,1444,794],{"emptyLinePlaceholder":793},[502,1446,1447,1450,1452,1454,1457,1460],{"class":504,"line":797},[502,1448,1449],{"class":1024},"if",[502,1451,516],{"class":508},[502,1453,519],{"class":512},[502,1455,1456],{"class":522},"ProvidesTemporaryURLs",[502,1458,1459],{"class":512},"()",[502,1461,1060],{"class":512},[502,1463,1464],{"class":504,"line":831},[502,1465,1466],{"class":698},"    \u002F\u002F biztonságos közvetlen storage-hoz-download\u002Fupload linkeket kínálni\n",[502,1468,1469],{"class":504,"line":860},[502,1470,1123],{"class":512},[455,1472,1473,1474,1476,1477,1479,1480,1482,1483,1486,1487,1489,1490,922],{},"Az ",[459,1475,1304],{}," publikus tartalomhoz való: egy stabil link, jellemzően egy publikus bucket vagy egy CDN base URL mögött. A ",[459,1478,1336],{}," időkorlátos, aláírt linket ad privát tartalomhoz, így a kliens közvetlenül a storage-tól tölt le, a service-eden való átfolyás helyett. A ",[459,1481,1399],{}," ugyanez közvetlen kliens-oldali feltöltéshez, egy ",[459,1484,1485],{},"UploadURL","-t adva vissza (az URL-t, plusz bármilyen headert vagy mezőt, amit a hívónak a kéréshez csatolnia kell, mert ez driverenként változik). Nem minden driver tud URL-t aláírni; a ",[459,1488,1456],{}," egy capability-ellenőrzés, amivel elágazhatsz ahelyett, hogy meghívnád a metódust, és utólag kezelnéd az ",[459,1491,1492],{},"ErrUnsupported",[488,1494,1496],{"id":1495},"kapcsolódó-oldalak","Kapcsolódó oldalak",[1498,1499,1500,1506,1514,1519],"ul",{},[1501,1502,1503,1505],"li",{},[464,1504,52],{"href":406},": a Driver\u002FDisk\u002FManager modell, a dekorátorok.",[1501,1507,1508,1510,1511,1513],{},[464,1509,413],{"href":414},": driverek, amikre egy ",[459,1512,461],{},"-et rá lehet építeni, teszthez vagy egy-node-os telepítéshez.",[1501,1515,1516,1518],{},[464,1517,417],{"href":418},": az S3-kompatibilis driver, és a saját presigned URL-támogatása.",[1501,1520,1521,1523,1524,1526],{},[464,1522,422],{"href":423},": a konformancia-suite, ami ellenőrzi, hogy egy ",[459,1525,477],{}," konzisztensen viselkedik-e.",[1528,1529,1530],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":498,"searchDepth":580,"depth":580,"links":1532},[1533,1534,1535,1536,1537,1538],{"id":490,"depth":580,"text":491},{"id":655,"depth":580,"text":656},{"id":925,"depth":580,"text":926},{"id":1145,"depth":580,"text":1146},{"id":1280,"depth":580,"text":1281},{"id":1495,"depth":580,"text":1496},"A Disk metódusai, amiket a service-kód nap mint nap hív: írások, olvasások, listázás, URL-ek.","md",null,{},{"icon":401},{"title":409,"description":1539},"HO6Uvji5kQJbk-RBHor8giNwkkOwOV9AWoXr7hoaFsg",[1547,1549],{"title":52,"path":406,"stem":407,"description":1548,"icon":401,"children":-1},"Object storage egy Driver\u002FDisk\u002FManager modell mögött, memória-, helyi lemez- és S3-kompatibilis driverekkel.",{"title":413,"path":414,"stem":415,"description":1550,"icon":401,"children":-1},"A két driver, ami a gyökér storage modulban szállít, teszthez és egy-node-os telepítéshez.",1787346805922]