Asp.net core 如何确保ASP.NET核心';s文件流不';不要读太多的东西';文件';内容长度是多少?
我有一个API端点,用于上传大文件,然后直接流式传输到DB。我使用ASP.NET Core的Asp.net core 如何确保ASP.NET核心';s文件流不';不要读太多的东西';文件';内容长度是多少?,asp.net-core,file-upload,Asp.net Core,File Upload,我有一个API端点,用于上传大文件,然后直接流式传输到DB。我使用ASP.NET Core的IFormFeature来实现这一点,调用IFormFile.OpenReadStream()来获取传递给我的流 我想强制执行最大文件大小以避免滥用。我知道ifformfile有一个Length属性,但我假设它是基于内容长度或类似属性的,不可信(如果我错了,请纠正我,但我知道100%确定文件大小的唯一方法是实际读取数据;客户端可能发送不正确的内容长度) 因此,我必须确保在读取流时,它读取的内容不会超过if
IFormFeature
来实现这一点,调用IFormFile.OpenReadStream()
来获取传递给我的流
我想强制执行最大文件大小以避免滥用。我知道ifformfile
有一个Length
属性,但我假设它是基于内容长度
或类似属性的,不可信(如果我错了,请纠正我,但我知道100%确定文件大小的唯一方法是实际读取数据;客户端可能发送不正确的内容长度
)
因此,我必须确保在读取流时,它读取的内容不会超过ifformfile.Length
中指定的内容(理想情况下,如果遇到额外的字节,它应该抛出)。我还没有找到这样做的方法。这是可能的,还是有更好的方法来确保服务器不会从发送错误内容长度头的客户端读取大量数据
(不用说,这不需要将整个文件读入内存。)如果使用ifformfile
,则整个文件将读入内存/磁盘,因此ifformfile.Length
将是正确的字节数。哦,我的错。那么,我看错了文档。如果您使用的是ifformfile
,则整个文件都会读取到内存/磁盘中,因此ifformfile.Length
将是正确的字节数。哦,我的错。那么,我看错了文件。