DotNetZip:C#アクセス許可でzipを作成する問題
-
03-07-2019 - |
質問
DotNetZipを使用していますが、Macで許可の問題が発生していることに気付きました。これは、コンテンツの処理を使用する場合にのみ発生するようです。
ieディスクに保存した場合
using (ZipFile zip = new ZipFile(@"C:\zip\temp.zip"))
{
// this works fine
}
しかし、このようにコンテンツの処理を使用すると、Macではユーザーのアクセス許可が拒否されます(すべてのグループがチェックされません)
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "filename=" + filename);
using (ZipFile zip = new ZipFile(Response.OutputStream))
{
//
}
解決
ApplicationTypeを「application / octet-stream」に変更してみてください。信じられないかもしれませんが、それは私にとって以前に問題を修正しました。とにかく一見の価値があります。
最大の問題は、ファイルがMac側からどのように要求されているかということです。ファイルを提供するWindows Webサーバーの場合、Windowsはクライアント側でアクセス許可を設定できません。 Webブラウザ(Safari / Firefox)の場合、おそらくデフォルト設定で実行されているだけです。したがって、Macにファイルを要求しているものを知ることで、正しい答えを得ることができます。
他のヒント
これにはいくつかの理由が考えられますが、Macのフレームワークにバグがあると思います。 Macを使用している場合は、Monoを使用していると思われるので、Monoグループに連絡して、彼らの意見を確認してください。また、彼らはかなり良いフォーラムを持っているので、彼らが言っていることを見ることができます。
最後に" content-disposition"を使用してエラーが発生した場合は、" content-disposition"を使用せず、その方法を使用します。
これがDotNetZipと関係があるかどうかはわかりませんが、現在ライブラリの新しいバージョンであるv1.7があります。 AES暗号化、ZIP64、その他多くのことを行います。 また、v1.8バージョンには、GZipStreamに置き換わるだけでなく、いくつかの新しいクールなSeelctor機能があります。