Przechowywanie obrazów dla aplikacji webowej

0

Mam aplikację webową, która generuje pliki JPG i zapisuje je w wwwroot/src/img.

Załóżmy, że obrazek zostanie zindeksowany przez Google, po ponownym wrzuceniu aplikacji na serwer, w.w. folder będzie pusty i adresy zindeksowanych obrazków będą zwracać 404.

I tak się zastanawiam jakie mogą być alternatywne praktyczne sposoby zapisu obrazów dla aplikacji webowej, żeby ich nie tracić za każdym razem przy aktualizacji aplikacji. Domyślam się, że z racji rozmiarów DB odpada. Może FTP? Chmura?

1

A nie wystarczy folder, który nie jest wdrażany/aktualizowany razem z aplikacją? ;) Po prostu możesz tego jednego nie kasować - oczywiście to zależy w jaki sposób masz zrobione aktualizacje.

0

@Ktos: Przez Publish w VS2019.

2

To tam w pliku .pubxml możesz sterować co ma być wdrażane i czy ma być usuwane - spójrz na <DeleteExistingFiles>False</DeleteExistingFiles> oraz w zasadzie na całe pomijanie folderów - https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-5.0#exclude-files.

0

@Ktos: Po Twoim poprzednim poście zacząłem googlać pod tym kątem. Wydaje mi się, że Twoje rozwiązanie załatwi sprawę. Wcześniej nie przeszło mi przez myśl, że można pomijać foldery przy publikacji projektu. Dzięki!

0

Z tym DeleteExistingFiles radzę być ostrożny. Nie raz byłem świadkiem sytuacji gdzie jakiś stary plik DLL powodował problemy. Wszystko ładnie działało na środowisku developerskim a na innym (czasem na produkcji) rzeczy przestawały tajemniczo działać.

0

@Aventus: To będzie jedynie kwestia oznaczenia folderu z obrazkami.

1

@bakunet: Ja z kolei jakoś nie pomyślałem, że koniecznie muszę szukać innej metody przechowywania danych niż pliki, bo jak dotąd robiłem aktualizacje to nigdy nie usuwałem tego typu folderów ;)

Ale tak swoją drogą to całkiem polecam Azure Storage czy inne Amazon S3 jeżeli danych masz olbrzymie ilości, bo koszty przechowywania/transferu potrafią być dość niskie - tylko trzeba uważnie czytać i porównywać opcje i pamiętać o koszcie transferu danych. I o odpowiednich uprawnieniach, jeżeli nie przechowujesz danych które mogą być dostępne publicznie.

A Scaleway oferuje system kompatybilny z S3 za darmo do 70 GB.

1

I tak się zastanawiam jakie mogą być alternatywne praktyczne sposoby zapisu obrazów dla aplikacji webowej, żeby ich nie tracić za każdym razem przy aktualizacji aplikacji. Domyślam się, że z racji rozmiarów DB odpada. Może FTP? Chmura?

zapis poza aplikacja i samemu obsłużenie dostępu do obrazków

public async IActionResult Download(Guid id)
{
	return File(bytes...);
}
0

Możesz w czasie wdrożenia nie ruszać w ogóle folderu z obrazkami. Możesz trzymać obrazki poza katalogiem w którym jest aplikacja. Możesz trzymać je na zewnętrznym CDN a nawet w bazie.

Możliwości jest sporo

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