Ghiduri

Cum adaugi încărcări de fișiere în aplicația ta: stocare, limite și securitate

Pentru a adăuga încărcări de fișiere în aplicația ta, stochează fișierele în stocare de obiecte (un bucket), nu pe discul serverului sau în baza de date, și salvează în baza de date o înregistrare mică cu cheia fișierului, numele, dimensiunea, tipul și proprietarul. Verifică dimensiunea și tipul fișierului pe server, decide de la început dacă fișierele sunt publice (cum ar fi fotografiile de produs) sau private (cum ar fi facturile) și servește fișierele private doar după ce verifici cine le cere. Într-un constructor de aplicații AI, poți descrie funcția de încărcare dintr-un singur prompt; partea importantă este să testezi că fișierele supraviețuiesc unei redeploy-uri și că nu pot fi deschise de persoana greșită.

Decide ce fel de încărcări ai nevoie

Înainte să construiești, răspunde la trei întrebări:

  1. Ce fișiere? Fotografii de profil, imagini de produs, PDF-uri, foi de calcul, audio, video. Asta stabilește limitele de tip și dimensiune.
  2. Cine le poate vedea? Oricine (o galerie publică) sau doar cel care a încărcat și administratorii (contracte, documente de identitate, fișiere ale clienților).
  3. Ce se întâmplă după încărcare? Doar se stochează, se afișează o previzualizare, se redimensionează imaginile sau se citește conținutul.

Imaginile publice și documentele private cer configurări diferite, deci stabilește asta primul.

Unde ar trebui să fie fișierele

OpțiuneCum funcționeazăPotrivită pentruAtenție la
Stocare de obiecte (bucket)Fișiere păstrate într-un serviciu construit pentru ele; baza de date stochează o cheie sau un URLAproape orice aplicațieRegulile de acces trebuie setate corect
Stocare oferită de platformăConstructorul de aplicații sau hostingul activează un bucket pentru tineAplicații construite pe acea platformăLimitele și prețurile urmează platforma
Discul serveruluiFișiere scrise în sistemul de fișiere al serverului aplicațieiDoar dezvoltare localăAdesea șterse la repornire sau redeploy
În baza de dateOcteții fișierului stocați într-un tabelAproape niciodatăUmflă baza de date, încetinește copiile de rezervă
Widget de încărcare terțUn serviciu găzduit gestionează tot fluxulMedia grea, transformări de imaginiÎncă un furnizor, cont și factură

Pentru majoritatea aplicațiilor, stocarea de obiecte plus o înregistrare în baza de date este răspunsul corect. Rândul din baza de date este ce interoghează aplicația („arată documentele acestui utilizator”); bucket-ul doar păstrează octeții.

Fișiere publice vs. private

  • Fișierele publice (fotografii de produs, imagini de blog, avatare) pot fi servite de la un URL public. Oricine are linkul le poate deschide, ceea ce este în regulă pentru acest tip de conținut.
  • Fișierele private (facturi, contracte, documente medicale sau de identitate, livrabile pentru clienți) nu trebuie să aibă niciodată un URL public ușor de ghicit. Serverul verifică dacă utilizatorul logat este proprietarul fișierului sau are permisiune, apoi fie îl trimite înapoi, fie returnează un URL semnat: un link care funcționează doar un timp scurt.

O greșeală frecventă și gravă este fișierele private stocate într-un bucket public, cu nume previzibile. Oricine ghicește /uploads/invoice-102.pdf primește factura altcuiva.

Exemple de prompturi

O încărcare publică de imagini:

Permite adminilor să încarce până la 5 fotografii de produs pentru fiecare produs. Acceptă JPG, PNG și WebP de până la 5 MB fiecare. Stochează fișierele în stocarea de fișiere, salvează cheia, dimensiunea și ordinea fiecărui fișier într-un tabel product_images și afișează miniaturi cu un buton de eliminare. Validează tipul și dimensiunea pe server, nu doar în browser.

O încărcare privată de documente:

Adaugă o pagină de Documente pentru clienții logați. Clienții pot încărca PDF-uri de până la 20 MB. Fișierele sunt private: stochează-le în stocarea de fișiere, salvează ID-ul proprietarului, numele original, dimensiunea și ora încărcării într-un tabel documents și permite descărcarea doar proprietarului și administratorilor. Descărcările trec printr-o rută de server care verifică permisiunea. Nu expune niciodată un URL public pentru aceste fișiere.

Continuări utile:

Afișează o bară de progres în timpul încărcării și o eroare clară dacă fișierul este prea mare sau de tip greșit.

Când un rând de document este șters, șterge și fișierul stocat.

Pas cu pas

  1. Alege tipurile și limitele de dimensiune pentru fiecare câmp de încărcare. Fii specific: „PDF de până la 20 MB”, nu „documente”.
  2. Activează stocarea. Într-un constructor AI, cere încărcările și acesta o va configura; în altă parte, creează un bucket și adaugă datele de acces ca secrete pe server.
  3. Creează un tabel în baza de date pentru înregistrările fișierelor: ID, proprietar, cheie de stocare, nume original, tip, dimensiune, dată de creare.
  4. Construiește ruta de încărcare pe server: verifică dacă utilizatorul este logat, verifică tipul și dimensiunea, generează o cheie de stocare sigură (nu numele fișierului utilizatorului), salvează fișierul, inserează înregistrarea.
  5. Construiește calea de descărcare sau afișare: URL public pentru fișierele publice; o rută cu verificare de permisiune sau un URL semnat pentru cele private.
  6. Construiește interfața: selector de fișiere, drag and drop dacă e util, progres, previzualizări, erori.
  7. Tratează ștergerile, ca eliminarea unei înregistrări să elimine și fișierul stocat.
  8. Testează: încarcă, reîncarcă, redeployează sau publică, apoi verifică dacă fișierul se încarcă în continuare. Apoi autentifică-te cu alt utilizator și încearcă să deschizi fișierul privat al primului.

Greșeli frecvente

  • Scrierea încărcărilor pe discul serverului. Funcționează în dezvoltare, apoi fișierele dispar după o repornire sau un redeploy.
  • Încrederea în verificările din browser. Setarea „accept” a unui câmp de fișier este o sugestie, nu securitate. Verifică tipul și dimensiunea pe server.
  • Folosirea numelui fișierului utilizatorului ca cheie de stocare. Numele se ciocnesc și pot conține caractere ciudate. Generează o cheie unică și salvează numele original separat.
  • Bucket-uri publice pentru fișiere private. Vezi mai sus; aceasta este greșeala care ajunge în știri.
  • Permiterea oricărui tip de fișier. Fișierele HTML sau SVG servite de pe domeniul tău pot rula scripturi în unele configurații. Acceptă doar tipurile de care ai nevoie.
  • Lipsa unei limite de dimensiune. O singură încărcare uriașă poate consuma spațiul tău de stocare sau poate face ca cererea să expire.
  • Fișiere orfane. Ștergerea rândului din baza de date fără fișierul umple încet stocarea pentru care plătești.
  • Uitarea telefonului. Fotografiile de pe telefon pot fi mari și în formate precum HEIC; decide dacă le accepți sau le convertești.

Listă de verificare

  • Fișierele merg în stocarea de obiecte, nu pe discul serverului sau în baza de date
  • Fiecare fișier are o înregistrare în baza de date cu proprietar, cheie, nume, tip și dimensiune
  • Tipul și dimensiunea sunt verificate pe server
  • Cheile de stocare sunt generate, nu luate din numele fișierului
  • Fișierele private sunt servite doar după o verificare de permisiune
  • Un alt utilizator nu poate deschide fișierele tale private, nici cu linkul
  • Ștergerea unei înregistrări șterge și fișierul
  • Fișierele se încarcă în continuare după publicare sau redeploy
  • Erorile de încărcare sunt afișate clar, inclusiv pe telefon

Încărcări de fișiere în Mythex

Mythex poate activa automat stocarea de fișiere pentru un proiect atunci când aplicația ta are nevoie de încărcări, deci nu trebuie să configurezi manual un bucket. Poți scrie și /storage în chat. Este disponibilă în planurile Free și Pro, cu o limită de 1 GB în Free, iar starea ei o vezi la Settings → Storage.

Documentația spune clar că hostingul publicat nu este un sistem de fișiere local durabil, deci cere agentului să folosească stocarea platformei în loc să salveze pe disc. Fișierele stocate și descărcările se plătesc din soldul tău de credite, după dimensiune și după cât se descarcă; Pro plătește jumătate din tariful Free. Vezi Stocarea de fișiere în documentație.

Încărcările merg de obicei împreună cu o bază de date pentru înregistrările fișierelor și cu autentificarea pentru fișierele private. Dacă construiești un loc în care clienții fac schimb de documente, vezi cum construiești un portal pentru clienți și parcurge lista de verificare de securitate înainte de lansare.

Întrebări

Unde ar trebui stocate fișierele încărcate?

În stocare de obiecte (un serviciu construit pentru fișiere, adesea numit bucket), nu pe discul serverului aplicației și nu în baza de date. În baza de date stochezi doar cheia sau URL-ul fișierului, plus detalii precum numele, dimensiunea și proprietarul.

De ce dispar fișierele încărcate după ce public sau redeploy aplicația?

Majoritatea platformelor de hosting nu păstrează un disc local durabil: când aplicația repornește sau este redeployată, fișierele scrise pe disc se pierd. Salvează încărcările în stocare de obiecte.

Cum păstrez fișierele încărcate private?

Nu le face citibile public. Serverul tău verifică dacă utilizatorul logat are voie să vadă fișierul, apoi îl trimite sau returnează un link semnat, valabil puțin timp.

Acceptă Mythex încărcări de fișiere?

Da. Mythex poate activa stocarea de fișiere pentru un proiect atunci când aplicația are nevoie de încărcări, în planurile Free și Pro, cu o limită de 1 GB în Free. Ceri agentului funcția de încărcare sau scrii /storage.

Mythex · Pricing · Construiește orice cu AI · Șabloane pentru site-uri și aplicații · Mythex comparat · Glosar pentru crearea de aplicații cu AI · Instrumente gratuite pentru crearea de aplicații cu AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)