Распакуйте zip-файл напрямую из удаленного источника
Я хочу сохранить некоторые данные в zip-формате в Azure FileStorage.
Может ли SevenZipSharp (особенно класс SevenZipExtractor) работать с такими URL-адресами, как https://myaccount.file.core.windows.net/shared1/folder1/data00054.zip
вместо локального файла?
Я хочу получить файл из удаленного места, распаковать в память, обработать данные, а затем очистить память.
1 ответ
Кажется, вы можете сделать это даже без какой-либо сторонней библиотеки, такой как 7zip:
WebClient OpenRead получит вам поток из вашего URI, а конструктор ZipArchive из потока получит из него ZipArchive:
var uri = @"https://myaccount.file.core.windows.net/shared1/folder1/data00054.zip";
var wc = new WebClient();
var stream = wc.OpenRead(uri);
var zip = new ZipArchive(stream);
Примените блоки использования по мере необходимости.
Если вы действительно хотите использовать стороннюю библиотеку, вы можете найти документацию (в данном случае источник) здесь. Как видите, он может работать и с произвольными потоками:
var uri = @"https://myaccount.file.core.windows.net/shared1/folder1/data00054.zip";
var wc = new WebClient();
var stream = wc.OpenRead(uri);
var extractor = new SevenZipExtractor(stream);