Odwołanie do zasobów mediów znajdujących się poza projektem

0

Chodzi mi o to, że mam dowolny projekt. Powiedzmy asp.net core web api na backu oraz react na froncie. I powiedzmy project frontowy reacta w folderze client w projekcie asp.net core.

Jeśli mam jakieś media (.mp4, .png, .jpg) na innym dysku, to jak je "ościeżkować" w projekcie, żeby wszystko chodziło?

1

Ta ścieżka jest zmienna? Jeśli nie to zapisz ją w appsettings.json po stronie backendu i zrób endpoint na odpytanie o tą ścieżkę. Jeśli jest zmienna i z każdą operacją potrzebujesz pobrać nową to może <input type="file"> po stronie frontu i endpoint, który zwróci pliki z tej ściężki.

0

Ech głupi jestem. Zauważyłem że np. VS można przecież dać "add existing element" i wtedy zasób z zupełnie innego miejsca projektu jest spokojnie dodany.

1

Uwierz mi... Wrócisz z tym problemem w momencie jak zaczniesz hostować swoją aplikację. Dobrze by było jakbyś powiedział co chcesz uzyskać, bo zakładam, że możesz od złej strony podchodzić do tego.

1

Można jeszcze użyć static files jeśli chcemy mieć dostęp do tych plików z frontu
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-7.0

0
AdamWox napisał(a):

Uwierz mi... Wrócisz z tym problemem w momencie jak zaczniesz hostować swoją aplikację. Dobrze by było jakbyś powiedział co chcesz uzyskać, bo zakładam, że możesz od złej strony podchodzić do tego.

Po prostu zastanawiałem się w jaki sposób dać odwołanie do mediów które znajdują się poza projektem, np. na innym dysku.
Mam na myśli sytuację gdy chcę hostowac project na własnym serwerze ws2019std np.

Chociaż zawsze mogę wdrożyć ten projekt do folderu, który znajduje się na dysku z danymi i wtedy wszystko będę miał w projekcie.

1

Jeśli jakieś pliki są integralną częścią projektu, to nie trzymasz ich na innym dysku, tylko w projekcie. Nie wiem jak React, ale Angular ma folder assets, do którego wrzuca się między innymi obrazy, filmy i ikony.

W dalszym ciągu nie wyjaśniłeś co chcesz uzyskać i do czego Ci te pliki, czego tyczą w twojej aplikacji.

0

@AdamWox Nie wyjaśniłem, bo tak na prawdę chodzi o to że zastanawiałem się czy wdrożyć ten projekt
na dysku systemowym i dać "w jakiś sposób" odniesienie w kodzie do drugiego dysku z jpg'ami lub mp4'kami?
Czy raczej od razu wdrożyć projekt w folderze na drugim duuużo większym dysku. I chyba tak zrobię.
Tu nie chodzi o jakąś specyficzność projektu lub specjalne jego przeznaczenie. Chodziło raczej właśnie o to, że
co zrobić gdybym jednak wdrożył projekt w folderze na tzw. "C" ale jednocześnie chciał "wrzucić" w ten projekt
"odniesienia, paths" do innego dysku. Natomiast z tego co widzę... skoro nie chcę mieć ryzyka że nie starczy mi
miejsca, to chyba po prostu wdrożę całość na tym większym dysku i po temacie.

A przeznaczenie samych plików? Nic szczególnego. Po prostu jakieś mp4 (tutoriale mojego autorstwa) lub
obrazki (np. ludzi korzystających z serwisu: jakieś avary powiedzmy) lub inne media, które osoba korzystająca
z serwisu będzie mogła sobie frontem wrzucić na swój profil w serwisie.

1

Musisz zrozumieć, że to co jest na komputerze hostującym powinno być w jak najmniejszym stopniu dostępne dla frontu. Jeśli jakieś pliki, nie będące kodem, należą do projektu, to trzymasz je w projekcie i po opublikowaniu w folderze z aplikacją. Twój serwerowy dysk D: to nie to samo co po stronie klienta (frontu). Twoje oprogramowanie nie powinno dawać dostępu do niczego poza folderem aplikacji. Przeglądarka wyświetlając twój program pod adresem https://moja_apka.com pokazuje tylko to co jest w folderze z aplikacją, na dysku, na którym jest aplikacja.

PRZYKŁAD
Aplikacja hostowana jest na C:\www\moje_apka. Na dysku D: masz jakieś pliki, które chcesz pokazać w aplikacji, w folderze assets, czyli D:\assets. Jak myślisz, gdzie aplikacja będzie szukać folderu? Na pewno nie na D:. Będzie szukać w C:\www\moja_apka\D:\assets, a coś takiego nie istnieje. Dostęp do plików dla aplikacji kończy się na folderze, w którym ta aplikacja jest.

ROZWIĄZANIA

  1. Hostuj aplikację na większym dysku. Choć mało prawdopodobne, że ci miejsca braknie. To nie te czasy żeby na Windows Server mieć 50GB.
  2. Jeśli możesz to trzymaj pliki w bazie danych w postaci BINARY, lub IMAGE
  3. Jeśli chodzi o mp4, wrzuć na youtube i skorzystaj z odtwarzacza react-youtube
  4. Jeśli chodzi o avatary to może gravatar
0
AdamWox napisał(a):

Musisz zrozumieć, że to co jest na komputerze hostującym powinno być w jak najmniejszym stopniu dostępne dla frontu. Jeśli jakieś pliki, nie będące kodem, należą do projektu, to trzymasz je w projekcie i po opublikowaniu w folderze z aplikacją. Twój serwerowy dysk D: to nie to samo co po stronie klienta (frontu). Twoje oprogramowanie nie powinno dawać dostępu do niczego poza folderem aplikacji. Przeglądarka wyświetlając twój program pod adresem https://moja_apka.com pokazuje tylko to co jest w folderze z aplikacją, na dysku, na którym jest aplikacja.

Ok;-)

PRZYKŁAD
Aplikacja hostowana jest na C:\www\moje_apka. Na dysku D: masz jakieś pliki, które chcesz pokazać w aplikacji, w folderze assets, czyli D:\assets. Jak myślisz, gdzie aplikacja będzie szukać folderu? Na pewno nie na D:. Będzie szukać w C:\www\moja_apka\D:\assets, a coś takiego nie istnieje. Dostęp do plików dla aplikacji kończy się na folderze, w którym ta aplikacja jest.

Ok;-)

ROZWIĄZANIA

  1. Hostuj aplikację na większym dysku. Choć mało prawdopodobne, że ci miejsca braknie. To nie te czasy żeby na Windows Server mieć 50GB.

Ok;-)

  1. Jeśli możesz to trzymaj pliki w bazie danych w postaci BINARY, lub IMAGE

Ok;-)

  1. Jeśli chodzi o mp4, wrzuć na youtube i skorzystaj z odtwarzacza react-youtube

Zastanawiam się czy da się zrobić tak, żeby film był prywatny i można go było odtworzyć jedynie
u mnie w serwisie. Znaczy taki krótszy to może być publiczny, bo wtedy daje linka do mojego serwisu pod
filmem i generuję sobie w ten sposób zasięgi. Jednak jeśli będę chciał dać tutek trwający 20 godzin, to wolałbym żeby
publicznie i za free dostępny nie był. Albo np. kurs złożony ze 100 krótkich filmów w youtube ale tak żeby w youtube nikt
ich nie mógł obejrzeć i żeby mógł tylko po zakupie u mnie na serwisie. No bo rzeczywiście, skoro da się wrzucić na serwery
youtube to po co mam zawalać bazę danych lub mój serwerowy dysk;-))
edit:
Tylko ja bym wolał ominąć hosting video płatny. Nie po to w końcu ogarnąłem sobie własny serwer
z dyskiem 1tb żeby teraz płacić 170 zł/mc za vimeo lub youtubę.

  1. Jeśli chodzi o avatary to może gravatar

Ciekawe;-)

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