Я хочу загрузить один файл в удаленном Zip-файле, который находится в облаке. ZIP-файл слишком велик для загрузки целиком, поэтому я решил найти способ загрузить в архиве только один файл (XML), который мне нужен. Я пробовал и тестировал веб-клиент и веб-запрос, но он загружает весь zip-файл (также слишком большой файл для этих техник обычно не работает). Я смотрю на SharpZipLib, но не знаю, как им пользоваться. Это правильная библиотека, которую я должен использовать, или есть другие доступные, которые я могу получить и протестировать. Большое спасибо.
Это невозможно. Кроме того, Какие темы я могу задать здесь? совершенно ясно говорит о том, что здесь нельзя запрашивать рекомендации по библиотекам.
@KenWhite, я согласен, что здесь не следует спрашивать о рекомендациях библиотеки, но причина, по которой ОП все еще спрашивают об этом, может быть потому, что на SO есть много сообщений с рекомендациями, которые имеют много голосов ... Я не понимаете, почему за них проголосовали? Нравится Вот этот
@KenWhite Это возможно, если удаленный сервер позволяет запрашивать части файла (через HTTP-заголовок Range), а также позволяет получать длину содержимого без фактического содержимого (через запрос HEAD).
@Evk как такое возможно?
Если вы прочитаете спецификацию формата zip (даже расплывчатую, например, в википедии: en.wikipedia.org/wiki/Zip_(file_format)), вы увидите, что в конце zip-файла есть «Конец записи центрального каталога». Итак, сначала вы запрашиваете длину файла с помощью запроса HEAD, затем вы обнаруживаете эту запись EOCD с помощью запроса (ов) диапазона, и оттуда вы можете найти смещение и длину целевой записи и загрузить только ее с помощью другого запроса диапазона. Однако маловероятно, что для вас есть доступные инструменты, поэтому вам придется реализовать это самостоятельно.
@zackraiyan: Здесь много старых постов, получивших большое количество голосов, которые сегодня были бы не по теме. Было создано много новых сайтов (таких как Суперпользователь, Ошибка сервера и т. д.), Которые не существовали, когда были заданы эти вопросы. Кроме того, руководящие принципы со временем развиваются, и актуальными являются только те, которые действуют в момент, когда задается вопрос, а в текущих руководящих принципах говорится, что вы не можете запрашивать рекомендации для библиотек, инструментов, книг, учебных пособий или других сторонних материалов. ресурсы здесь.
@Evk: Даже если вы перепрыгнули через все обручи (запись EOCD, загрузка диапазона), вы все равно получите сжатый контент без информации, необходимой для его распаковки.
@ Evk, опять не получается, я как-то пробовал что-то подобное, но тщетно :(
@KenWhite Я не согласен. EOCD указывает на список центральных заголовков файлов. Каждый такой заголовок содержит указатель на заголовок локального файла. Этот заголовок содержит всю информацию, необходимую для распаковки содержимого (например, используемый метод сжатия), и сразу за ним следует сжатое содержимое. Итак, 3 диапазона поиска (если нам повезет найти EOCD с первым) должно быть достаточно для загрузки и распаковки определенного файла.





Невозможно загрузить только один файл из ZIP-архива, если вы его не распаковываете / распаковываете ... Итак, это то, что вам нужно делать :)