大于4KB的文件损坏或清空上传

时间:2018-03-21 18:48:14

标签: c# asp.net-core asp.net-core-2.0

我在我的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。

1 个答案:

答案 0 :(得分:0)

刚刚发现在我的特定情况下出现了什么问题,我正在使用中间件进行日志记录和请求处理,并且由于某种原因影响请求,如果我禁用中间件,它会完美地上传。