ДотНетЗип:создание zip с проблемой разрешений C#
-
03-07-2019 - |
Вопрос
Я использую DotNetZip и заметил, что у меня возникают проблемы с разрешениями на Mac.Кажется, это происходит только тогда, когда я использую расположение контента.
т.е. если я просто сохраню его на диск
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, Windows не может установить разрешения на стороне клиента.Если это веб-браузер (Safari/Firefox), он, вероятно, работает с настройками по умолчанию.Поэтому знание того, что запрашивает файл с Mac, может помочь получить правильный ответ.
Другие советы
Для этого может быть несколько причин, но я предполагаю, что в платформе Mac есть ошибка.Будучи на Mac, я предполагаю, что вы используете моно, поэтому свяжитесь с группой Mono и узнайте, что они скажут.Также у них довольно хороший Форум посмотрим, что они скажут.
Наконец, если вы получаете ошибки с использованием «content-disposition», не используйте «content-disposition» и используйте тот способ, которым он работает.
Я не знаю, имеет ли это какое-либо отношение к DotNetZip, но сейчас существует более поздняя версия библиотеки — v1.7.Он выполняет шифрование AES, ZIP64 и многое другое.А версия v1.8 имеет несколько новых интересных функций Seelctor, а также замену GZipStream.