Динамическое сохранение файлов .net core - PullRequest
0 голосов
/ 27 августа 2018

У меня есть эта функция, которая сохраняет файл в wwwroot foldar:

[HttpPost]
public async Task<IActionResult> UploadFile(IFormFile file)
{
   if (file == null || file.Length == 0)
       return Content("file not selected");

   var path = Path.Combine( Directory.GetCurrentDirectory(), "wwwroot", file.FileName);

   using (var stream = new FileStream(path, FileMode.Create))
   {
      await file.CopyToAsync(stream);
   }

   return RedirectToAction("Files");
}

Я пытаюсь сохранить файлы динамически, чтобы при каждой загрузке файла функция проверяла, есть ли папка с идентификатором пользователя (из сеанса). Если папка существует, она сохраняется там, в противном случае откроется новая папка с его идентификатором.

Я хочу создать подпапку для каждого идентификатора пользователя и сохранить пользовательский файл в эту папку

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Я добавил это, и теперь оно работает

var userId = HttpContext.Session.GetString("UserId");

        if (!Directory.Exists(Path.Combine(
                    Directory.GetCurrentDirectory(), $"wwwroot/{userId}")))
        {
            Directory.CreateDirectory(Path.Combine(
                    Directory.GetCurrentDirectory(), $"wwwroot/{userId}"));
        }
0 голосов
/ 27 августа 2018

Самый простой способ получить идентификатор текущего пользователя:

var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);

Тогда вы просто вводите это на свой путь:

var path = Path.Combine( Directory.GetCurrentDirectory(), $"wwwroot/users/{userId}", file.FileName);
...