C# 在使用SaveAs()保存之前处理HttpPostedFile.InputStream
在保存文件之前,我需要检查文件是否被压缩。我创建了以下扩展名方法来检查文件是否使用C# 在使用SaveAs()保存之前处理HttpPostedFile.InputStream,c#,asp.net,.net,file-upload,stream,C#,Asp.net,.net,File Upload,Stream,在保存文件之前,我需要检查文件是否被压缩。我创建了以下扩展名方法来检查文件是否使用ZipFile(从库中)进行了压缩: 问题是,当我调用HttpPostedFile.SaveAs()时,它会将文件保存为0kb: if(uploadedFile.IsCompressed()) { uploadedFile.InputStream.Seek(0, SeekOrigin.Begin); uploadedFile.SaveAs(physicalZipFile.FullName); }
ZipFile
(从库中)进行了压缩:
问题是,当我调用HttpPostedFile.SaveAs()时,它会将文件保存为0kb:
if(uploadedFile.IsCompressed())
{
uploadedFile.InputStream.Seek(0, SeekOrigin.Begin);
uploadedFile.SaveAs(physicalZipFile.FullName);
}
这与在IsCompressed()
中使用流有关。在存钱之前,我试着从头开始,但问题仍然存在
有人能在这里解释一下这个问题吗?对于那些偶然发现这个问题的人。。。以下是我的解决方案:
我使用ILSpy反编译程序集,发现ZipFile.Dispose()
实际上关闭了流。还有其他清理代码,所以我不建议不要处理ZipFile
实例
另一方面,ZipArchive
(System.IO.Compression
)实际上具有以下重载构造函数:
public ZipArchive(Stream stream, ZipArchiveMode mode, bool leaveOpen)
将leaveOpen
设置为true
将在正确处理实例后使流保持打开状态。对于偶然发现此项的任何人。。。以下是我的解决方案:
我使用ILSpy反编译程序集,发现ZipFile.Dispose()
实际上关闭了流。还有其他清理代码,所以我不建议不要处理ZipFile
实例
另一方面,ZipArchive
(System.IO.Compression
)实际上具有以下重载构造函数:
public ZipArchive(Stream stream, ZipArchiveMode mode, bool leaveOpen)
将leaveOpen
设置为true
将在正确处置实例后使流保持打开状态