Распакуйте 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);
Другие вопросы по тегам