Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在使用SaveAs()保存之前处理HttpPostedFile.InputStream_C#_Asp.net_.net_File Upload_Stream - Fatal编程技术网

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
将在正确处置实例后使流保持打开状态