首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SharpZipLib GetInputStream

SharpZipLib GetInputStream
EN

Stack Overflow用户
提问于 2010-11-03 02:12:53
回答 2查看 1.1K关注 0票数 0

我已经构建了一个via应用程序,用户可以在其中从他们的文件系统中选择zipfile (通过asp:FileUpload)。然后应用程序解压zipfile和ftp的每个文件。

代码如下:

代码语言:javascript
复制
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)总是什么也不给。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-03 02:52:19

首先,应该在调用GetInputStream的之后,在循环中递增i。如果只有一个文件,我想这个逻辑总是会失败。

代码语言:javascript
复制
While i < zf.Count
    ze = zf.EntryByIndex(i)

    Dim ftp As New ftpItem(constr)
    ftp.upload(ze.Name, "pic", zf.GetInputStream(i), ze.Name, ze.Name)

    i = i + 1

End While

如果这不起作用,那么有一个据称可以工作的C#示例here,它使用不同的方法GetNextEntry来迭代压缩文件的列表。

票数 0
EN

Stack Overflow用户

发布于 2010-11-03 02:15:38

我认为你在流的末尾,试着移到流的开头,这样你就可以阅读所有内容。

代码语言:javascript
复制
str.Seek(0, SeekOrigin.Begin)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4080766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档