Guies

Com afegir pujada de fitxers a la teva app: emmagatzematge, límits i seguretat

Per afegir pujada de fitxers a la teva app, guarda els fitxers en un emmagatzematge d'objectes (un bucket), no al disc del teu servidor ni a la base de dades, i desa un petit registre a la base de dades amb la clau del fitxer, el nom, la mida, el tipus i el propietari. Comprova la mida i el tipus del fitxer al servidor, decideix d'entrada si els fitxers són públics (com les fotos de productes) o privats (com les factures), i serveix els fitxers privats només després de comprovar qui ho demana. En un constructor d'apps amb IA pots descriure la funcionalitat de pujada en un sol prompt; la part important és provar que els fitxers sobreviuen a un nou desplegament i que no els pot obrir la persona equivocada.

Decideix quin tipus de pujades necessites

Abans de construir, respon tres preguntes:

  1. Quins fitxers? Fotos de perfil, imatges de productes, PDF, fulls de càlcul, àudio, vídeo. Això decideix els límits de tipus i de mida.
  2. Qui els pot veure? Tothom (una galeria pública) o només qui els puja i els administradors (contractes, documents d'identitat, fitxers de clients).
  3. Què passa després de la pujada? Només es desa, es mostra una vista prèvia, es redimensionen les imatges o se'n llegeix el contingut.

Les imatges públiques i els documents privats necessiten configuracions diferents, així que decideix això primer.

On han d'estar els fitxers

OpcióCom funcionaIdeal per aCompte amb
Emmagatzematge d'objectes (bucket)Fitxers guardats en un servei creat per a això; la teva base de dades guarda una clau o una URLGairebé qualsevol appLes regles d'accés s'han de definir correctament
Emmagatzematge proporcionat per la plataformaEl teu constructor d'apps o allotjament activa un bucket per a tuApps construïdes sobre aquella plataformaEls límits i els preus els marca la plataforma
Disc del servidorFitxers escrits al sistema de fitxers del servidor de l'appNomés desenvolupament localSovint s'esborren en reiniciar o tornar a desplegar
A la base de dadesEls bytes del fitxer guardats en una taulaGairebé maiInfla la base de dades i alenteix les còpies de seguretat
Widget de pujada de tercersUn servei d'allotjament gestiona tot el fluxMitjans pesats, transformacions d'imatgesUn altre proveïdor, compte i factura

Per a la majoria d'apps, l'emmagatzematge d'objectes més un registre a la base de dades és la resposta adequada. El registre de la base de dades és el que consulta la teva app («mostra els documents d'aquest usuari»); el bucket només conserva els bytes.

Fitxers públics i privats

  • Els fitxers públics (fotos de productes, imatges del blog, avatars) es poden servir des d'una URL pública. Qualsevol amb l'enllaç els pot obrir, cosa que és correcta per a aquest tipus de contingut.
  • Els fitxers privats (factures, contractes, documents mèdics o d'identitat, lliuraments a clients) no han de tenir mai una URL pública endevinable. El servidor comprova que l'usuari connectat és el propietari del fitxer o té permís, i després el retorna en streaming o retorna un URL signat: un enllaç que només funciona durant un temps curt.

Un error habitual i greu és guardar fitxers privats en un bucket públic amb noms previsibles. Qui endevini /uploads/factura-102.pdf obté la factura d'una altra persona.

Prompts d'exemple

Una pujada d'imatge pública:

Permet que els administradors pugin fins a 5 fotos de producte per producte. Accepta JPG, PNG i WebP de fins a 5 MB cadascuna. Guarda els fitxers a l'emmagatzematge de fitxers, desa la clau, la mida i l'ordre de cada fitxer en una taula product_images i mostra miniatures amb un botó d'eliminar. Valida el tipus i la mida al servidor, no només al navegador.

Una pujada de document privat:

Afegeix una pàgina de Documents per als clients connectats. Els clients poden pujar PDF de fins a 20 MB. Els fitxers són privats: guarda'ls a l'emmagatzematge de fitxers, desa l'ID del propietari, el nom original, la mida i l'hora de pujada en una taula documents, i permet només que el propietari i els administradors els descarreguin. Les descàrregues passen per una ruta del servidor que comprova els permisos. Mai no exposis una URL pública per a aquests fitxers.

Seguiments útils:

Mostra una barra de progrés durant la pujada i un error clar si el fitxer és massa gran o del tipus equivocat.

Quan s'esborri una fila de document, esborra també el fitxer emmagatzemat.

Pas a pas

  1. Tria tipus i límits de mida per a cada camp de pujada. Sigues concret: «PDF de fins a 20 MB», no «documents».
  2. Activa l'emmagatzematge. En un constructor d'apps amb IA, demana les pujades al xat i ell el configurarà; en altres casos, crea un bucket i afegeix-ne les credencials com a secrets del servidor.
  3. Crea una taula a la base de dades per als registres dels fitxers: ID, propietari, clau d'emmagatzematge, nom original, tipus, mida, data de creació.
  4. Construeix la ruta de pujada al servidor: comprova que l'usuari ha iniciat sessió, comprova tipus i mida, genera una clau d'emmagatzematge segura (no el nom del fitxer de l'usuari), desa el fitxer i insereix el registre.
  5. Construeix el camí de descàrrega o de visualització: URL pública per als fitxers públics; una ruta amb comprovació de permisos o un URL signat per als privats.
  6. Construeix la interfície: selector de fitxers, arrossegar i deixar anar si és útil, progrés, vistes prèvies, errors.
  7. Gestiona els esborrats perquè eliminar un registre també elimini el fitxer emmagatzemat.
  8. Prova: puja, recarrega, torna a desplegar o publica, i comprova que el fitxer encara es carrega. Després entra amb un altre usuari i intenta obrir el fitxer privat del primer.

Errors habituals

  • Escriure les pujades al disc del servidor. Funciona en desenvolupament, i després els fitxers desapareixen en reiniciar o tornar a desplegar.
  • Confiar en les comprovacions del navegador. La configuració «accept» d'un selector de fitxers és una indicació, no seguretat. Comprova el tipus i la mida al servidor.
  • Usar el nom del fitxer de l'usuari com a clau d'emmagatzematge. Els noms xoquen i poden contenir caràcters estranys. Genera una clau única i guarda el nom original per separat.
  • Buckets públics per a fitxers privats. Vegeu més amunt; és el que acaba als titulars de premsa.
  • Permetre qualsevol tipus de fitxer. Els fitxers HTML o SVG servits des del teu domini poden executar scripts en alguns entorns. Accepta només els tipus que necessitis.
  • Sense límit de mida. Una pujada enorme pot consumir la teva quota d'emmagatzematge o fer que la petició caduqui.
  • Fitxers orfes. Esborrar la fila de la base de dades però no el fitxer omple lentament un emmagatzematge que estàs pagant.
  • Oblidar el mòbil. Les fotos dels telèfons poden ser grans i en formats com HEIC; decideix si els acceptes o els converteixes.

Llista de comprovació

  • Els fitxers van a un emmagatzematge d'objectes, no al disc del servidor ni a la base de dades
  • Cada fitxer té un registre a la base de dades amb propietari, clau, nom, tipus i mida
  • El tipus i la mida es comproven al servidor
  • Les claus d'emmagatzematge es generen, no es prenen del nom del fitxer
  • Els fitxers privats només es serveixen després d'una comprovació de permisos
  • Un altre usuari no pot obrir els teus fitxers privats, ni tan sols amb l'enllaç
  • Esborrar un registre esborra el fitxer
  • Els fitxers continuen carregant-se després de publicar o tornar a desplegar
  • Els errors de pujada es mostren clarament, també en un telèfon

Pujada de fitxers a Mythex

Mythex pot activar l'emmagatzematge de fitxers per a un projecte automàticament quan la teva app necessiti pujades, així que no cal que aprovisionis un bucket a mà. També pots escriure /storage al xat. Està disponible al Free i al Pro, amb un límit d'1 GB al Free, i pots veure'n l'estat a Configuració → Emmagatzematge.

La documentació és explícita que l'allotjament publicat no és un sistema de fitxers local durador, així que demana a l'agent que usi l'emmagatzematge de la plataforma en lloc de desar al disc. Els fitxers emmagatzemats i les descàrregues es paguen amb el teu saldo de crèdits, segons la mida i la quantitat descarregada; el Pro paga la meitat de la tarifa del Free. Consulta Emmagatzematge de fitxers a la documentació.

Les pujades solen anar juntes amb una base de dades per als registres dels fitxers i amb inici de sessió per als fitxers privats. Si estàs construint un espai on els clients intercanvien documents, consulta com construir un portal de clients, i repassa la llista de seguretat abans de llançar.

Preguntes

On s'han d'emmagatzemar els fitxers pujats?

En un emmagatzematge d'objectes (un servei creat per a fitxers, sovint anomenat bucket), no al disc del servidor de l'app ni dins de la base de dades. A la teva base de dades només guarda la clau o la URL del fitxer, més detalls com el nom, la mida i el propietari.

Per què els meus fitxers pujats desapareixen després de publicar o tornar a desplegar?

La majoria de plataformes d'allotjament no mantenen un disc local durador: quan l'app es reinicia o es torna a desplegar, els fitxers escrits al seu disc es perden. Desa les pujades a un emmagatzematge d'objectes.

Com mantinc privats els fitxers pujats?

No els facis llegibles públicament. Fes que el teu servidor comprovi que l'usuari connectat té permís per veure un fitxer, i després envia'l o retorna-li un enllaç signat de vida curta.

Mythex admet pujada de fitxers?

Sí. Mythex pot activar l'emmagatzematge de fitxers per a un projecte quan l'app necessiti pujades, tant al Free com al Pro, amb un límit d'1 GB al Free. Ho demanes a l'agent o escrius /storage.

Mythex · Pricing · Crea qualsevol cosa amb IA · Plantilles de llocs web i aplicacions · Mythex comparat · Glossari de creació d’aplicacions amb IA · Eines gratuïtes per crear aplicacions amb IA · English

English አማርኛ العربية Български বাংলা Bosanski Č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) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)