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ę.
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.
a nie lepiej po prostu wrzucić je do bazy ?
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?
Nie są dostępne z poziomu serwera WWW. wwwroot też nie jest dostępny, o ile nie masz UseStaticFiles() z tego, co pamiętam.