在 asp.net 核心 2.2 上上传文件 API 时无法使用替换功能

can't use replace function when upload files API on asp.net core 2.2

我在 ASP.NET Core 2.2 Web API 上工作并遇到一个问题:我无法使用替换功能更改 属性 selected 的名称我上传时得到的文件。

当我这样尝试时:

string fileName = DisplayFileName.Replace(".xlsx", "-") + Guid.NewGuid().ToString() + ".xlsx";

我收到一个错误

Iform file doesn't contain definition for replace and no accessible extension method Replace accepting first argument of iformfile

完整样本在这里:

[HttpPost, DisableRequestSizeLimit]
public IActionResult Upload()
{
        try
        {
            var DisplayFileName = Request.Form.Files[0];
            string fileName = DisplayFileName.Replace(".xlsx", "-") + Guid.NewGuid().ToString() + ".xlsx";
            string Month = DateTime.Now.Month.ToString();
            string DirectoryCreate = myValue1 + Month;

            Path.Combine(Directory.GetCurrentDirectory(), folderName);

            if (!Directory.Exists(DirectoryCreate))
            {
                Directory.CreateDirectory(DirectoryCreate);
            }

            if (DisplayFileName.Length > 0)
            {
                var filedata = ContentDispositionHeaderValue.Parse(Request.Form.Files[0].ContentDisposition).FileName.Trim('"');
                var dbPath = Path.Combine(DirectoryCreate, fileName);
              
                using (var stream = new FileStream(dbPath, FileMode.Create))
                {
                    Request.Form.Files[0].CopyTo(stream);
                }

                return Ok(new { dbPath });
            }
            else
            {
                return BadRequest();
            }
        }
        catch (Exception ex)
        {
            return StatusCode(500, $"Internal server error: {ex}");
        }
}

如何解决这个问题? 样品

假设我 select 文件 developed.xlsx

然后在使用替换或任何方式后结果将是

发达-sddfn78888.xlsx

您可以使用System.IO.Path从请求文件中获取文件名和文件扩展名。 改变这个 string fileName = DisplayFileName.Replace(".xlsx", "-") + Guid.NewGuid().ToString() + ".xlsx";

string filename = Path.GetFileName(DisplayFileName.FileName);
string fileExtension = Path.GetExtension(DisplayFileName.FileName);
string newFileName = $"{filename}-{Guid.NewGuid().ToString()}{fileExtension}";

否则,您可以将代码修改为

 string fileName = DisplayFileName.FileName.Replace(".xlsx", "-") + Guid.NewGuid().ToString() + ".xlsx";