62,238
社区成员




[HttpPost]
public ActionResult ImportAuditGroup([FromForm] int projectId, IFormCollection files)
{
var allFileLen = files.Files.Sum(x => x.Length);
var resultBuffer = new List<byte>((int)allFileLen);
foreach (var filesFile in files.Files)
{
var fileName = filesFile.FileName;//文件名
var fileExt = Path.GetExtension(fileName);//后缀
var ms = filesFile.OpenReadStream();//打开文件流
var msBuffer = ms.ToArray();//文件转为字节数组
ms.Dispose();
var memoryStreamBuffer = _batchUserServices.BatchCreateAuditGroup(currentContextUser.CompanyId, projectId, msBuffer);
MemoryStream resultMemoryStream = new MemoryStream();
resultMemoryStream.WriteArray(fileName.GetBytes());
resultMemoryStream.Write(memoryStreamBuffer);
resultBuffer.AddRange(resultMemoryStream.ToArray());
resultMemoryStream.Dispose();
}
return File(resultBuffer.ToArray(), "application/octet-stream");
}
ms.ToArray()是扩展方法 需要引用NewLife.Core的Nuget包。Newlife的github地址:https://github.com/NewLifeX/X
在IOHelper文件里 代码太多,就不贴出来了。
IFormCollection (core2.2)
IFormFile (core2.1)
之前查到2.2里好像直接用IFormFile拿不到
又3条限制了。。。
public byte[] StreamToBytes(Stream stream)
{
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
return bytes;
}
3.可以自动识别呀,我还是通过判断后缀是不是xls决定用哪个读取方法