Я следовал этому руководству для загрузки файлов в каталог https://www.learnrazorpages.com/razor-pages/forms/file-upload
Я добавил файлы в путь "wwwroot / files /"
Я хочу напечатать все имена файлов в каталогев таблице с использованием цикла for.
Проблема в том, что я не могу понять, как этого добиться в asp .net Core.
, вот как я размещаю файлы
public async Task OnPostAsync()
{
if (ModelState.IsValid)
{
if (Documento.Length > 2097152)
{
_toastNotification.AddErrorToastMessage("O tamanho deste ficheiro é superior a 2MB. ");
}
else
{
var file = Path.Combine(_environment.ContentRootPath, "wwwroot\\files\\ficha-tecnica", _context.Referencias.Where(r => r.Id == ReferenciaId).FirstOrDefault().Nome + ".pdf");
Path.Combine(_environment.ContentRootPath, "wwwroot\\files\\ficha-tecnica");
using (var fileStream = new FileStream(file, FileMode.Create))
{
await Documento.CopyToAsync(fileStream);
}
}
}
ViewData["ReferenciaId"] = new SelectList(_context.Referencias, "Id", "Nome");
}
Я видел пример, как получить доступ к файлообменнику
private readonly NoPaperContext _context;
private readonly IHostingEnvironment _environment;
private readonly IToastNotification _toastNotification;
private readonly IFileProvider _fileProvider;
public IndexModel(NoPaperContext context, IHostingEnvironment environment, IToastNotification toastNotification, IFileProvider fileProvider)
{
_context = context;
_environment = environment;
_toastNotification = toastNotification;
_fileProvider = fileProvider;
}
[BindProperty]
[Display(Name = "Referência")]
[Required(ErrorMessage = "Selecione uma Referência")]
public int ReferenciaId { get; set; }
[BindProperty]
[Required(ErrorMessage = "Selecione um Documento")]
[RegularExpression(@"([a-zA-Z0-9\s_\\.\-:_()])+(.pdf)$", ErrorMessage = "Apenas são aceites ficheiros .pdf")]
public IFormFile Documento { get; set; }
public IDirectoryContents DirectoryContents { get; private set; }
public void OnGet()
{
ViewData["ReferenciaId"] = new SelectList(_context.Referencias, "Id", "Nome");
DirectoryContents = _fileProvider.GetDirectoryContents(string.empty);
}
Хотя я не вижу свои файлы в Каталоге Содержание
У меня есть 3 подпапки в wwwroot / files
Я могу видеть их с помощью отладчика, но я не могу получить доступ к их содержимому, чтобы увидеть, сколько файлов в них напечатано
Я забыл добавить, при запуске я добавляю службу fileprovider
services.AddSingleton<IFileProvider>(
new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/files")));
обратите внимание, что мои файлы находятся в wwwroot / files / subfolder1 и т.д ..