Przechowywanie plików w aplikacji webowej

0

Witam, piszę aplikację webową w ASP MVC5. Jedno z wymagań to możliwość dodania z panelu administracyjnego artykułu z załączonym obrazkiem. Tutaj pojawia się moje pytanie- jak najlepiej to osiągnąć? Czy zapisać plik do bazy danych, a jeśli tak to jak go następnie wczytać z poziomu view? Czy może dynamicznie dodawać pliki jako resources i zapisywać bezpośrednio na dysku z pominięciem bazy danych? Czy są jakieś przyjęte standardy co do przechowywania i wczytywania plików (nie koniecznie zdjęć)?

2

W bazie trzymasz path do pliku na dysku. Jak go wrzucisz twój wybór. Dla przykładu w pracy w naszym CMS mamy tak, że pliki są wrzucane za pomocą AJAXA na serwer i zwracany jest id z tabeli Files. Przy kliknięciu "zapisz" Id przekazane jako tablica do kontroler(z innymi danymi). Artykuł i plik są wiązane w tablicy pośredniej, gdzie jest tylko id artykułu i id pliku.

0

Dzięki za odpowiedź. Zastanawiam się jak to będzie wyglądać w przypadku wystawienia strony na hostingu, np. GoDaddy czy WinHost. Nie orientujesz się czy nie ma w takim przypadku problemów z uprawieniami do zapisywania plików?

2

Mogą być problemy, ale często wystarczy po prostu ustawić kontu na którym chodzi pula aplikacji

Alternatywnie można też trzymać pliki w bazie. Szczegółowa implementacja zależy od bazy danych, no i ma swoje wady (czas backupowania, rozmiar bazy) i zalety (łatwość backupowania, transakcyjność, uprawnienia).

A ja to bym w ogóle wystawił jakiś oddzielny serwis do plików i na S3 wrzucił.

0

Ciekawy pomysł z tym S3, muszę poczytać. Jakby ktoś jeszcze miał jakieś pomysły/doświadczenia to proszę pisać. Tak z ciekawości- jak z tym problememem radzi sobie chociażby 4P @Adam Boduch ?

1
Aventus napisał(a):

Ciekawy pomysł z tym S3, muszę poczytać. Jakby ktoś jeszcze miał jakieś pomysły/doświadczenia to proszę pisać. Tak z ciekawości- jak z tym problememem radzi sobie chociażby 4P @Adam Boduch ?

Prosto: plik na dysku + nazwa pliku zapisywana w bazie danych. Jednak zapis/odczyt pliku następuje poprzez warstwę abstrakcji - bibliotekę, która w prosty sposób umożliwia podmianę lokalnego systemu plików na - np. AWS S3. Czyli dostępne są różne adaptery. My, póki co korzystamy z adaptera filesystem.

0

Dzięki za odpowiedź. Skontaktowałem się z jednym z hostingów i wspierają bezpośredni zapis plików także chyba pójdę tą drogą zamiast za bardzo komplikować. Dodam również tak jak piszesz warstwę abstrakcji gdybym miał w przyszłości zmienić źródło plików.

1 użytkowników online, w tym zalogowanych: 0, gości: 1