我已经构建了一个web应用程序,用户可以从他的文件系统中选择一个zip文件(通过asp:FileUpload)。然后,应用程序解压缩zipfile和ftp的每个文件。SharpZipLib GetInputStream
下面的代码:
Public Sub Unzip(ByVal str As Stream, ByVal constr As String)
Dim zf As New ZipFile(str)
Dim ze As ZipEntry
Dim i As Integer = 0
While i < zf.Count
ze = zf.EntryByIndex(i)
i = i + 1
Dim ftp As New ftpItem(constr)
ftp.upload(ze.Name, "pic", zf.GetInputStream(i), ze.Name, ze.Name)
End While
zf.Close()
End Sub
的ftpItem类是一类我自己至极的处理FTP。 ftp.upload需要将第三个参数作为要发送文件的流。
但由于某些原因,zf.GetInputStream(i)总是没有提供任何东西。
在此先感谢 伊沃
搬到开始并没有帮助。仍然是相同的结果。增量确实在错误的地方。但即使把它放在正确的位置也无济于事。我得到的条目是好的,如果我运行调试器,并且询问ze.Name,它会给出我的文件名;就像ze.Size为我提供了正确的文件大小。 (我也尝试了迭代,就像没有运气的c#示例) – Ivo 2010-11-02 18:59:00
@ user495089 - 是我的评论还是下面的答案?对我来说,就像你在这里有一个简单的逻辑错误 – 2010-11-02 19:02:36
您是否试过将未压缩的数据写入本地文件('FileStream')或'MemoryStream'而不是使用FTP? 'zf.GetInputStream()'属性的外观是什么?什么是“上传”的界面?只是一个'Stream',或者其他一些类作为参数3? – 2010-11-02 19:20:14