我在我的API中实现了一个控制器来上传带有HTTP Post
请求的文件,这与您在网络上找到的内容没什么挑战:
public async Task<IActionResult> Post()
{
if (string.IsNullOrEmpty(Request.GetMultipartBoundary()))
{
return StatusCode(415);
}
long size = Request.Form.Files.Sum(f => f.Length);
var filePath =
Path.Combine(_hostingEnvironment.ContentRootPath, "TempUploads");
string fileName = "";
List<string> tempFileName = new List<string>();
foreach (var formFile in Request.Form.Files)
{
fileName = formFile.FileName;
string timeStamp = DateTime.Now.ToString("yyyyMMddHHmmssfff");
fileName = fileName.Replace(Path.GetExtension(formFile.FileName),
timeStamp + Path.GetExtension(formFile.FileName));
filePath = filePath + "\\" + fileName;
if (formFile.Length > 0)
{
using(var stream = new FileStream(filePath, FileMode.Create))
{
await formFile.CopyToAsync(stream);
}
}
tempFileName.Add(fileName);
}
return Ok(new { tempFileName });
}
它为名称添加了timeStamp
,但我已经尝试过没有它,它不会改变任何内容。
我得到的问题是,如果我上传的文件大于4KB
(仍然非常小),它们要么已损坏(无法打开),要么为空(相同数量的页面,但都是空白的)和重量增加几KB。
答案 0 :(得分:0)
刚刚发现在我的特定情况下出现了什么问题,我正在使用中间件进行日志记录和请求处理,并且由于某种原因影响请求,如果我禁用中间件,它会完美地上传。