2009-03-03 49 views
0

我正在使用DotNetZip并注意到我在Mac上获得许可问题。这似乎只发生在我使用内容处置。DotNetZip:使用C#权限问题创建zip

也就是说,如果我只是将它保存到磁盘

using (ZipFile zip = new ZipFile(@"C:\zip\temp.zip")) 
{ 
    // this works fine 
} 

,但如果我使用的内容部署像这样,在Mac用户权限被拒绝(Everyone组选中)

Response.ContentType = "application/zip"; 
Response.AddHeader("content-disposition", "filename=" + filename); 

using (ZipFile zip = new ZipFile(Response.OutputStream)) 
{ 
    // 
} 

回答

1

您可以尝试将ApplicationType更改为“application/octet-stream”。相信与否,这对我来说已经解决了问题。无论如何,这是值得的。

最大的问题是如何从Mac的一方请求文件?如果它是提供文件的Windows Web服务器,则Windows无法在客户端设置权限。如果它是一个网页浏览器(Safari/Firefox),它们可能只是在默认设置下运行。因此,了解什么是从Mac请求文件可以帮助获得正确的答案。

0

有可能有几个原因,但我的猜测是在Mac上的框架中存在一个错误。在Mac上我假设你使用单声道,所以请联系Mono小组,看看他们有什么要说的。他们还有一个相当不错的forum看他们有什么要说的。

最后,如果您使用“content-disposition”获取错误,那么请勿使用“content-disposition”,并使用其工作方式。

+0

谢谢,我应该澄清,我的Windows Web服务器上生成的压缩。 Mac用户下载它们时会发生此问题。 – frosty 2009-03-03 16:19:54

0

我不知道它是否与DotNetZip有任何关系,但现在有一个更高版本的库 - v1.7。它做AES加密,ZIP64,一堆其他的东西。 v1.8版本有一些新的酷的Seelctor功能,以及GZipStream的替代品。