ASP.NET Core使用IFormFile上传文件,文件名中包含路径

问题描述 投票:0回答:2
 [HttpPost("FilePost")]
    public async Task<IActionResult> FilePost(List<IFormFile> files)
    {
        long size  = files.Sum(f => f.Length);
        var filePath = Directory.GetCurrentDirectory() + "/files";
        if (!System.IO.Directory.Exists(filePath))
        {
            Directory.CreateDirectory(filePath);
        }

        foreach (var item in files)
        {
            if (item.Length > 0)
            {
                using (var stream = new FileStream(filePath,FileMode.CreateNew))
                {
                    await item.CopyToAsync(stream);
                }
            }
        }
        return Ok(new { count = files.Count, size, filePath });

    }

FormFile。 FileName =目录+文件名,

上传文件,文件名带路径信息,怎么办?

我只需要获取文件的名称。

asp.net-core
2个回答
0
投票

我只需要获取文件的名称。

使用Path.GetFileName()获取文件的名称,并使用Path.Combine()将所需的保存路径与文件名组合,尝试下面的代码

 var filesPath = Directory.GetCurrentDirectory() + "/files";
        if (!System.IO.Directory.Exists(filesPath))
        {
            Directory.CreateDirectory(filesPath);
        }

        foreach (var item in files)
        {
            if (item.Length > 0)
            {
                var fileName = Path.GetFileName(item.FileName);
                var filePath = Path.Combine(filesPath, fileName);
                using (var stream = new FileStream(filesPath, FileMode.CreateNew))
                {
                    await item.CopyToAsync(stream);
                }
            }
        }

0
投票

好像你想要在文件路径上获取文件名。你可以把它搞定

using System.IO;

Path.GetFileName(filePath);

或扩展方法

public static string GetFilename(this IFormFile file)
{
    return ContentDispositionHeaderValue.Parse(
                    file.ContentDisposition).FileName.ToString().Trim('"');
}

如果您需要任何帮助,请告诉我

© www.soinside.com 2019 - 2024. All rights reserved.