我正在尝试阅读IFormFile
从这样的 HTTP POST 请求收到:
public async Task<ActionResult> UploadDocument([FromForm]DataWrapper data)
{
IFormFile file = data.File;
string fileName = file.FileName;
long length = file.Length;
if (length < 0)
return BadRequest();
using FileStream fileStream = new FileStream(fileName, FileMode.OpenOrCreate);
byte[] bytes = new byte[length];
fileStream.Read(bytes, 0, (int)file.Length);
...
}
但执行此行后出现问题:
fileStream.Read(bytes, 0, (int)file.Length);
的所有元素bytes
为零。
此外,在我的 Visual Studio 项目中创建了同名的文件,我不希望发生这种情况。
你无法打开一个IFormFile
与磁盘上的文件相同。你必须使用IFormFile.OpenReadStream()
反而。文档在这里
public async Task<ActionResult> UploadDocument([FromForm]DataWrapper data)
{
IFormFile file = data.File;
long length = file.Length;
if (length < 0)
return BadRequest();
using var fileStream = file.OpenReadStream();
byte[] bytes = new byte[length];
fileStream.Read(bytes, 0, (int)file.Length);
}
原因是fileStream.Read(bytes, 0, (int)file.Length);
看似空是,因为它是。这IFormFile.Filename
是请求给出的文件名,磁盘上不存在。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)