Загрузить отдельный файл в удаленном Zip-файле

Я хочу загрузить один файл в удаленном Zip-файле, который находится в облаке. ZIP-файл слишком велик для загрузки целиком, поэтому я решил найти способ загрузить в архиве только один файл (XML), который мне нужен. Я пробовал и тестировал веб-клиент и веб-запрос, но он загружает весь zip-файл (также слишком большой файл для этих техник обычно не работает). Я смотрю на SharpZipLib, но не знаю, как им пользоваться. Это правильная библиотека, которую я должен использовать, или есть другие доступные, которые я могу получить и протестировать. Большое спасибо.

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

Christopher H. 26.03.2018 05:23

Это невозможно. Кроме того, Какие темы я могу задать здесь? совершенно ясно говорит о том, что здесь нельзя запрашивать рекомендации по библиотекам.

Ken White 26.03.2018 05:24

@KenWhite, я согласен, что здесь не следует спрашивать о рекомендациях библиотеки, но причина, по которой ОП все еще спрашивают об этом, может быть потому, что на SO есть много сообщений с рекомендациями, которые имеют много голосов ... Я не понимаете, почему за них проголосовали? Нравится Вот этот

Christopher H. 26.03.2018 05:45

@KenWhite Это возможно, если удаленный сервер позволяет запрашивать части файла (через HTTP-заголовок Range), а также позволяет получать длину содержимого без фактического содержимого (через запрос HEAD).

Evk 26.03.2018 08:35

@Evk как такое возможно?

OneLazy 26.03.2018 08:44

Если вы прочитаете спецификацию формата zip (даже расплывчатую, например, в википедии: en.wikipedia.org/wiki/Zip_(file_format)), вы увидите, что в конце zip-файла есть «Конец записи центрального каталога». Итак, сначала вы запрашиваете длину файла с помощью запроса HEAD, затем вы обнаруживаете эту запись EOCD с помощью запроса (ов) диапазона, и оттуда вы можете найти смещение и длину целевой записи и загрузить только ее с помощью другого запроса диапазона. Однако маловероятно, что для вас есть доступные инструменты, поэтому вам придется реализовать это самостоятельно.

Evk 26.03.2018 08:47

@zackraiyan: Здесь много старых постов, получивших большое количество голосов, которые сегодня были бы не по теме. Было создано много новых сайтов (таких как Суперпользователь, Ошибка сервера и т. д.), Которые не существовали, когда были заданы эти вопросы. Кроме того, руководящие принципы со временем развиваются, и актуальными являются только те, которые действуют в момент, когда задается вопрос, а в текущих руководящих принципах говорится, что вы не можете запрашивать рекомендации для библиотек, инструментов, книг, учебных пособий или других сторонних материалов. ресурсы здесь.

Ken White 26.03.2018 14:22

@Evk: Даже если вы перепрыгнули через все обручи (запись EOCD, загрузка диапазона), вы все равно получите сжатый контент без информации, необходимой для его распаковки.

Ken White 26.03.2018 14:30

@ Evk, опять не получается, я как-то пробовал что-то подобное, но тщетно :(

Christopher H. 26.03.2018 14:45

@KenWhite Я не согласен. EOCD указывает на список центральных заголовков файлов. Каждый такой заголовок содержит указатель на заголовок локального файла. Этот заголовок содержит всю информацию, необходимую для распаковки содержимого (например, используемый метод сжатия), и сразу за ним следует сжатое содержимое. Итак, 3 диапазона поиска (если нам повезет найти EOCD с первым) должно быть достаточно для загрузки и распаковки определенного файла.

Evk 26.03.2018 14:45
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
10
386
0

Другие вопросы по теме