[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 =目录+文件名,
上传的文件,带有路径信息的文件名,怎么办?
我只需要获取文件名即可。
答案 0 :(得分:0)
似乎您想根据文件路径获取文件名。 您可以将其弄清楚
using System.IO;
Path.GetFileName(filePath);
或扩展方法
public static string GetFilename(this IFormFile file)
{
return ContentDispositionHeaderValue.Parse(
file.ContentDisposition).FileName.ToString().Trim('"');
}
如果需要帮助,请告诉我
答案 1 :(得分: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);
}
}
}
答案 2 :(得分:0)
我在使用不同的浏览器时遇到了同样的问题。 IE发送具有完整路径的FileName,而Chrome仅发送文件名。我使用Path.GetFileName()
来解决问题。
其他解决方法在您的前端。 Refer这可以从前端解决。