Како да додадете прикачување датотеки во вашата апликација: складирање, лимити и безбедност
За да додадете прикачување датотеки во вашата апликација, чувајте ги датотеките во складиште за објекти (bucket), а не на дискот на серверот или во базата, и зачувајте мал запис во базата со клучот на датотеката, името, големината, типот и сопственикот. Проверете ја големината и типот на датотеката на серверот, одлучете однапред дали датотеките се јавни (како фотографии на производи) или приватни (како фактури), и послужувајте приватни датотеки само откако ќе се провери кој бара пристап. Во AI алатка за изградба на апликации, функцијата за прикачување можете да ја опишете со еден промпт; важниот дел е тестирање дека датотеките преживуваат повторно распоредување и дека не може да ги отвори погрешната личност.
Одлучете каков вид прикачувања ви требаат
Пред градењето, одговорете на три прашања:
- Какви датотеки? Фотографии за профил, слики на производи, PDF-ови, табели, аудио, видео. Ова одредува ограничувања за тип и големина.
- Кој може да ги види? Сите (јавна галерија) или само прикачувачот и администраторите (договори, документи за идентификација, датотеки на клиенти).
- Што се случува по прикачувањето? Само се чуваат, се прикажува преглед, се менуваат димензиите на сликите или се чита содржината.
Јавните слики и приватните документи бараат различни поставки, па прво разјаснете го ова.
Каде треба да живеат датотеките
| Опција | Како функционира | Добра за | Внимавајте на |
|---|---|---|---|
| Складиште за објекти (bucket) | Датотеките се чуваат во услуга направена за нив; базата чува клуч или URL | Скоро секоја апликација | Правилата за пристап мора правилно да се постават |
| Складиште обезбедено од платформата | Вашата алатка за изградба или хост овозможува bucket за вас | Апликации изградени на таа платформа | Лимитите и цените ги следи платформата |
| Диск на серверот | Датотеките се запишуваат во файл системот на серверот | Само локален развој | Често се бришат при рестарт или повторно распоредување |
| Во базата на податоци | Бајтовите на датотеката се чуваат во табела | Скоро никогаш | Ја раздува базата, ги успорува резервните копии |
| Виџет за прикачување од трета страна | Хостиран прикачувач го обработува целиот тек | Тешки медиуми, трансформации на слики | Уште еден добавувач, сметка и фактура |
За повеќето апликации, складиште за објекти плус запис во базата е вистинскиот одговор. Записот во базата е она што апликацијата го пребарува („прикажи ги документите на овој корисник“); bucket-от само ги држи бајтовите.
Јавни наспроти приватни датотеки
- Јавни датотеки (фотографии на производи, слики во блог, аватари) може да се послужуваат од јавен URL. Секој со линкот може да ги отвори, што е во ред за таков вид содржина.
- Приватни датотеки (фактури, договори, медицински или документи за идентификација, работи за клиенти) никогаш не смеат да имаат јавен URL што може да се погоди. Серверот проверува дека најавениот корисник е сопственик на датотеката или има дозвола, па или ја пренесува назад или враќа потпишан URL: линк што работи само краток период.
Чест и сериозен бубач е приватни датотеки во јавен bucket со предвидливи имиња. Некој што ќе погоди /uploads/invoice-102.pdf ја добива туѓата фактура.
Примери на промпти
Прикачување јавна слика:
Дозволи администраторите да прикачуваат до 5 фотографии на производ по производ. Прифаќај JPG, PNG и WebP до 5 MB секоја. Зачувај ги датотеките во складиште за датотеки, зачувај го клучот, големината и редоследот на секоја во табелата product_images и прикажи минијатури со копче за отстранување. Проверувај го типот и големината на серверот, не само во прелистувачот.
Прикачување приватен документ:
Додај страница Документи за најавени клиенти. Клиентите можат да прикачуваат PDF-ови до 20 MB. Датотеките се приватни: чувај ги во складиште за датотеки, зачувај го ID на сопственикот, оригиналното име на датотеката, големината и времето на прикачување во табелата documents, и дозволи преземање само на сопственикот и администраторите. Преземањата минуваат преку серверска рута што проверува дозвола. Никогаш не изложувај јавен URL за овие датотеки.
Корисни дополнувања:
Прикажи лента на напредокот за време на прикачувањето и јасна грешка ако датотеката е преголема или од погрешен тип.
Кога ќе се избрише запис за документ, избриши и зачуваната датотека.
Чекор по чекор
- Одредете типови и лимити за големина за секое поле за прикачување. Бидете конкретни: „PDF до 20 MB“, а не „документи“.
- Овозможете складирање. Во AI алатка за изградба, побарајте прикачувања и таа ќе го постави складирањето; на друго место, создајте bucket и додајте ги неговите податоци како тајни на серверот.
- Создајте табела во базата за записи за датотеки: ID, сопственик, клуч во складиштето, оригинално име, тип, големина, време на создавање.
- Изградете рута за прикачување на серверот: проверете дали корисникот е најавен, проверете тип и големина, генерирајте безбеден клуч за складирање (не името на корисникот), зачувајте ја датотеката и вметнете го записот.
- Изградете патека за преземање или приказ: јавен URL за јавни датотеки; рута со проверка на дозвола или потпишан URL за приватни.
- Изградете го интерфејсот: избирач на датотеки, повлекување и спуштање ако е корисно, напредок, прегледи, грешки.
- Ракувајте со бришења така што отстранувањето на записот ја брише и зачуваната датотека.
- Тестирајте: прикачете, освежете, повторно распоредете или објавете и проверете дали датотеката сè уште се вчитува. Потоа најавете се со друг корисник и обидете се да ја отворите приватната датотека на првиот корисник.
Чести грешки
- Запишување прикачувања на дискот на серверот. Работи во развој, а потоа датотеките исчезнуваат по рестарт или повторно распоредување.
- Верување во проверките на прелистувачот. Поставката „accept“ на влезот за датотека е совет, не безбедност. Проверете тип и големина на серверот.
- Користење на името на датотеката од корисникот како клуч за складирање. Имињата се судираат и можат да содржат чудни знаци. Генерирајте единствен клуч и оригиналното име чувајте го посебно.
- Јавни bucket-и за приватни датотеки. Видете погоре; ова е она што ќе стане вест.
- Дозволување на кој било тип на датотека. HTML или SVG датотеки послужени од вашиот домен можат да извршуваат скрипти во некои поставки. Прифаќајте само типовите што ви требаат.
- Нема лимит на големина. Едно огромно прикачување може да ја потроши вашата квота за складирање или да предизвика истек на времето на барањето.
- Осамени датотеки. Бришењето на записот во базата, но не и на датотеката, полека ја полни складовата меморија за која плаќате.
- Заборавање на мобилните уреди. Фотографиите од телефон може да бидат големи и во формати како HEIC; одлучете дали ги прифаќате или ги конвертирате.
Листа за проверка
- Датотеките одат во складиште за објекти, не на диск на серверот или во базата
- Секоја датотека има запис во базата со сопственик, клуч, име, тип и големина
- Типот и големината се проверуваат на серверот
- Клучевите за складирање се генерираат, не се земаат од името на датотеката
- Приватните датотеки се послужуваат само по проверка на дозвола
- Друг корисник не може да ги отвори вашите приватни датотеки, дури ни со линкот
- Бришењето на запис ја брише датотеката
- Датотеките се вчитуваат и по објавување или повторно распоредување
- Грешките при прикачување се прикажуваат јасно, вклучувајќи на телефон
Прикачување датотеки во Mythex
Mythex може автоматски да овозможи складирање на датотеки за проект кога вашата апликација има потреба од прикачувања, па не обезбедувате bucket рачно. Можете и да напишете /storage во разговорот. Достапно е на Free и Pro, со ограничување од 1 GB на Free, а статусот можете да го видите под Settings → Storage.
Документацијата е експлицитна дека објавениот хостинг не е трајен локален файл систем, па побарајте од агентот да користи складиште на платформата, наместо да зачувува на диск. Зачуваните датотеки и преземањата се плаќаат од вашето кредитно салдо, според големината и според тоа колку се преземаат; Pro плаќа половина од цената на Free. Видете Складиште за датотеки во документацијата.
Прикачувањата обично одат заедно со база на податоци за записите за датотеките и најава за приватните датотеки. Ако градите место каде клиентите разменуваат документи, видете како да изградите клиентски портал, а пред лансирање поминете низ безбедносната листа за апликации направени со AI.
Прашања
Каде треба да се чуваат прикачените датотеки?
Во складиште за објекти (услуга направена за датотеки, често наречена bucket), не на диск на серверот на апликацијата и не во базата на податоци. Во вашата база чувајте само клучот или URL-то на датотеката, плус детали како име, големина и сопственик.
Зошто моите прикачени датотеки исчезнуваат по објавување или повторно распоредување?
Повеќето хостинг платформи немаат трајен локален диск: кога апликацијата ќе се рестартира или повторно распореди, датотеките напишани на нејзиниот диск се губат. Зачувајте ги прикачувањата во складиште за објекти.
Како да ги држам прикачените датотеки приватни?
Не правете ги датотеките јавно читливи. Серверот проверува дали најавениот корисник смее да ја види датотеката, па ја испраќа или враќа краткотраен потпишан линк до неа.
Дали Mythex поддржува прикачување датотеки?
Да. Mythex може да овозможи складирање на датотеки за проект кога апликацијата има потреба од прикачувања, на Free и Pro, со ограничување од 1 GB на Free. Го побарате тоа од агентот или напишете /storage.