使用 IFormFile 上传时如何更改文件名

Bra*_*rpy 2 c# asp.net-mvc asp.net-core

我有以下代码(我仍在开发它)成功将文件上传到所需路径。

   private async Task AddImage(IFormFile image, string filePath)
    {
      List<string> PermittedFileTypes = new List<string> {
        "image/jpeg",
        "image/png",
      };


      if (PermittedFileTypes.Contains(image.ContentType)) {

        // HERE I WILL CHECK NAME AND CHANGE IF IT ALREADY EXSISTS

        using (var stream = new FileStream(Path.Combine(filePath, image.FileName), FileMode.Create))
        {
          await image.CopyToAsync(stream);
        }
      } 
    }
Run Code Online (Sandbox Code Playgroud)

我遇到了一些问题,文件试图以相同的名称上传(显然出现错误),但文件不同。所以我想检查文件是否存在,如果它确实更改了文件名,可能会在末尾附加一个“_#”,然后以新名称再次上传文件。问题是 IFormFile.FileName 只是对于 get,我无法设置文件名。

在线查看我看到人们建议将文件复制到新名称的地方,但由于无法上传文件,我不能这样做。任何帮助表示赞赏!

Maj*_*ibi 5

您可以使用Path.Combine(filePath, Guid.NewGuid() )代替Path.Combine(filePath, image.FileName)来保证文件名是唯一的。