Gdzie przechowywać pliki użytkowników w asp.net

Odpowiedz Nowy wątek
2019-01-05 20:35
0

Cześć,
chciałem się skonsultować w którym miejscu powinienem utworzyć folder w asp.net core do przechowywania plików, które użytkownicy będą wrzucać na serwer i do których mają mieć tylko oni dostęp? Czy takie pliki można przechowywać na wwwroot w jakimś folderze czy może należy to trzymać gdzieś indziej? Chodzi o to, żeby osoba z zewnątrz nie mogła ich w żaden sposób pobrać.
z góry dziękuję za informację.

Pozostało 580 znaków

2019-01-05 20:44

Jeżeli osoba z zewnątrz nie może pobrać tych plików to musisz je zapisywać gdzieś poza wwwroot i mieć kontroler, który odpowiedniemu użytkownikowi prześle ten plik, a innemu brzydko odmówi.

Ja na przykład przechowuję w katalogu mojej aplikacji, w podfolderze AppData, a żeby się dostać do ścieżki tego folderu gdzieś w aplikacji mam zrobiony taki helper:

namespace Chione.Web.Extensions
{
    /// <summary>
    /// Class handling access to AppData folder
    /// </summary>
    public class AppDataHelper
    {
        private readonly IHostingEnvironment _hostingEnvironment;
        private const string _appDataFolder = "AppData";

        /// <summary>
        /// Creates a new instance
        /// </summary>
        /// <param name="hostingEnvironment"></param>
        public AppDataHelper(IHostingEnvironment hostingEnvironment)
        {
            _hostingEnvironment = hostingEnvironment;
        }

        /// <summary>
        /// Returns an absolute path to AppData file based on the
        /// relative path
        /// </summary>
        /// <param name="relativePath">
        /// Relative path in the AppData directory
        /// </param>
        /// <returns>Absolute path to file in AppData</returns>
        public string GetPath(string relativePath)
        {
            return Path.Combine(_hostingEnvironment.ContentRootPath, _appDataFolder, relativePath);
        }
    }
}

Który mi zwraca bezpośrednio np. /app/myawesomeapp/AppData/plik.txt lub coś innego, w zależności od serwera.

Pozostało 580 znaków

2019-01-05 20:46
cw
0

a nie lepiej po prostu wrzucić je do bazy ?

Pozostało 580 znaków

2019-01-05 20:54
0

@Ktos dziękuję!
@cw w sumie to nie jestem pewny czy to dobry pomysł - chwilowo mam troszkę za małe doświadczenie, żeby to rozważyć. Ale dzięki również za pomysł.

Pozostało 580 znaków

2019-01-05 22:57
0

Jeszcze tak dla pewności zapytam: czy wszystkie foldery poza wwwroot są w asp.net niedostępne dla użytkownika czy trzeba je jeszcze jakoś dodatkowo zaznaczać, że ma do nich nie być dostępu?

Pozostało 580 znaków

2019-01-06 10:51
1

Nie są dostępne z poziomu serwera WWW. wwwroot też nie jest dostępny, o ile nie masz UseStaticFiles() z tego, co pamiętam.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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