我具有将此功能保存在wwwroot
文件夹中的文件:
[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");
}
我正在尝试动态保存文件,以便每次上传文件时,该功能都会检查是否存在带有用户ID(来自会话)的文件夹。如果该文件夹存在,则将其保存在该文件夹中;否则,它将打开一个具有其ID的新文件夹。
我想为每个userId创建一个子文件夹,并将用户特定的文件保存到该文件夹
答案 0 :(得分:0)
获取当前用户ID的最简单方法是:
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
然后,您只需将其放入路径中即可
var path = Path.Combine( Directory.GetCurrentDirectory(), $"wwwroot/users/{userId}", file.FileName);
答案 1 :(得分:0)
我添加了它,现在不起作用
var userId = HttpContext.Session.GetString("UserId");
if (!Directory.Exists(Path.Combine(
Directory.GetCurrentDirectory(), $"wwwroot/{userId}")))
{
Directory.CreateDirectory(Path.Combine(
Directory.GetCurrentDirectory(), $"wwwroot/{userId}"));
}