Как да добавите качване на файлове в приложението си: съхранение, лимити и сигурност
За да добавите качване на файлове към приложението си, съхранявайте файловете в обектно хранилище (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 за частни.
- Създайте интерфейса: избор на файл, drag and drop, ако е полезно, напредък, прегледи, грешки.
- Обработете изтриванията, така че премахването на запис да премахва и съхранения файл.
- Тествайте: качете файл, презаредете, внедрете отново или публикувайте и проверете, че файлът още се зарежда. После влезте с друг потребител и опитайте да отворите частния файл на първия.
Чести грешки
- Запис на качванията на диска на сървъра. Работи в разработка, после файловете изчезват след рестарт или ново внедряване.
- Доверие на проверките в браузъра. Настройката „accept“ на полето за файл е подсказка, а не сигурност. Проверявайте типа и размера на сървъра.
- Използване на името на файла от потребителя като ключ в хранилището. Имената се сблъскват и могат да съдържат странни символи. Генерирайте уникален ключ и запазвайте оригиналното име отделно.
- Публични bucket-и за частни файлове. Вижте по-горе; това е грешката, която попада в новините.
- Позволяване на всякакви типове файлове. HTML или SVG файлове, обслужвани от вашия домейн, могат да изпълняват скриптове в някои конфигурации. Приемайте само нужните типове.
- Без лимит за размер. Едно огромно качване може да изяде разрешеното ви хранилище или да изтече по време.
- Осиротели файлове. Изтриването на записа в базата, без файла, постепенно запълва хранилище, за което плащате.
- Забравен мобилният вариант. Снимките от телефони могат да са големи и в формати като HEIC; решете дали да ги приемате или конвертирате.
Контролен списък
- Файловете отиват в обектно хранилище, а не на диска на сървъра или в базата данни
- Всеки файл има запис в базата данни със собственик, ключ, име, тип и размер
- Типът и размерът се проверяват на сървъра
- Ключовете в хранилището се генерират, не се взимат от името на файла
- Частните файлове се обслужват само след проверка на правата
- Друг потребител не може да отвори вашите частни файлове, дори с линка
- Изтриването на запис изтрива и файла
- Файловете се зареждат след публикуване или ново внедряване
- Грешките при качване се показват ясно, включително на телефон
Качване на файлове в Mythex
Mythex може да включи файлово хранилище за проект автоматично, когато приложението ви има нужда от качване, така че не настройвате bucket ръчно. Можете и да напишете /storage в чата. Достъпно е в Free и Pro, с лимит 1 GB в Free, а статусът му се вижда в Settings → Storage.
Документацията е ясна, че публикуваният хостинг не е постоянна локална файлова система, затова поискайте от агента да използва хранилището на платформата, а не диск. Съхранените файлове и изтеглянията се плащат от баланса с кредити — по размер и по колко се изтегля; Pro плаща половината от тарифата на Free. Вижте Файлово хранилище в документацията.
Качването обикновено върви с база данни за записите на файловете и с вход за частните файлове. Ако строите място, където клиенти си разменят документи, вижте как да създадете клиентски портал, а преди пускане минете през контролния списък за сигурност.
Въпроси
Къде трябва да се съхраняват качените файлове?
В обектно хранилище (услуга, създадена за файлове, често наричана bucket), а не на диска на сървъра на приложението и не в базата данни. В базата данни пазете само ключа или URL адреса на файла, плюс данни като име, размер и собственик.
Защо качените ми файлове изчезват след публикуване или ново внедряване?
Повечето хостинг платформи нямат постоянен локален диск: когато приложението се рестартира или внедри отново, файловете, записани на диска му, се губят. Запазвайте качванията в обектно хранилище.
Как да запазя качените файлове частни?
Не ги правете публично четими. Сървърът ви трябва да провери, че влезлият потребител има право да вижда файла, и след това да го изпрати или да върне кратковременен подписан линк към него.
Поддържа ли Mythex качване на файлове?
Да. Mythex може да включи файлово хранилище за проект, когато приложението има нужда от качване, в Free и Pro, с 1 GB лимит в Free. Поискате функцията от агента в чата или напишете /storage.