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:
- 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.
- 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).
- 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 funciona | Ideal per a | Compte amb |
|---|---|---|---|
| Emmagatzematge d'objectes (bucket) | Fitxers guardats en un servei creat per a això; la teva base de dades guarda una clau o una URL | Gairebé qualsevol app | Les regles d'accés s'han de definir correctament |
| Emmagatzematge proporcionat per la plataforma | El teu constructor d'apps o allotjament activa un bucket per a tu | Apps construïdes sobre aquella plataforma | Els límits i els preus els marca la plataforma |
| Disc del servidor | Fitxers escrits al sistema de fitxers del servidor de l'app | Només desenvolupament local | Sovint s'esborren en reiniciar o tornar a desplegar |
| A la base de dades | Els bytes del fitxer guardats en una taula | Gairebé mai | Infla la base de dades i alenteix les còpies de seguretat |
| Widget de pujada de tercers | Un servei d'allotjament gestiona tot el flux | Mitjans pesats, transformacions d'imatges | Un 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
- Tria tipus i límits de mida per a cada camp de pujada. Sigues concret: «PDF de fins a 20 MB», no «documents».
- 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.
- 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ó.
- 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.
- 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.
- Construeix la interfície: selector de fitxers, arrossegar i deixar anar si és útil, progrés, vistes prèvies, errors.
- Gestiona els esborrats perquè eliminar un registre també elimini el fitxer emmagatzemat.
- 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.