locked
Чтение файлов полученных из интернета. Есть ли какие ограничения? RRS feed

  • Вопрос

  • Добрый день.

    Пишу приложение для чтения zip-архивов и не могу прочитать файлик  полученный с сервера. Локальные (упакованные "вручную") читаются, а тот который упаковал сервер - нет, хотя если открывать его средствами ОСи - все работает как нужно, только вылетает предупреждение что файл может быть опасным. Для чтения содержимого файлов использую кроссплатформенную библиотеку написанную на нативном C++. Методом

     StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("/path/to/file"));
    файл находится, но когда его скармливаю библиотеке для работы с архивом - содержимое не находится и библиотека  генерит exception.
     

    Может есть какие-то ограничения по работе с файлами полученными из интернета? Почему один файл читается, а другой, скачанный с интернета нет? Библиотека виновата или ограничения платформы? В общем неясно почему не работает и на что грешить. Подскажите  что делать, если кто сталкивался с подобным поведением приложения. 

    Спасибо.

    7 апреля 2014 г. 9:43

Ответы

  • Ошибка была в readium, отписались разработчикам, но после проверки ВАКом выяснилось что неявно вызывается Win API и приложение не проходит проверку. Будем работать дальше над этой библиотекой, возможно общими усилиям доведем ее до ума.

    Пока же быстренько накидал на C# класс для работы с epub, возможно когда-нибудь выложим его на codeplex или github.

    9 апреля 2014 г. 18:27

Все ответы

  • StorageFile.GetFileFromApplicationUriAsync

    Этот метод находит файлы в Пакете приложения, а не в локальном хранилище. Я предполагаю что Вы качаете файл в хранилище и его потом вскрываете. 

    Попробуйте вытащить файл через ApplicationData.Current.LocalFolder.GetFileAsync()

    Вообще ограничений быть не должно, мы активно используем библиотеку SharpCompress.


    • Изменено Oleg Kurzov 7 апреля 2014 г. 11:05
    7 апреля 2014 г. 11:03
  • StorageFile.GetFileFromApplicationUriAsync

    Этот метод находит файлы в Пакете приложения, а не в локальном хранилище. Я предполагаю что Вы качаете файл в хранилище и его потом вскрываете. 

    Попробуйте вытащить файл через ApplicationData.Current.LocalFolder.GetFileAsync()

    Вообще ограничений быть не должно, мы активно используем библиотеку SharpCompress.


    Да, про отличие методов знаю. Просто неуказал что в тестовом приложении просто подкладываю файлы в пакет. Сгенирированный локально - читается, сгенерированный сервером - нет.
    7 апреля 2014 г. 11:50
  • Понял, извините, сразу на имя топикстартера не посмотрел, так бы не говорил про различие файлов :)

    Так какую Вы библиотеку используете для работы с архивами? 

    У нас SharpCompress используется как раз для Вашего сценария - скачали архивы из инета и работаем с ними.


    • Изменено Oleg Kurzov 7 апреля 2014 г. 12:18
    7 апреля 2014 г. 12:17
  • Мы используем readium, а в этой библиотеке используется libzip для распаковки архивов.
    7 апреля 2014 г. 12:53
  • В общем, ответ на вопрос - нет, ограничений для архивов из интернета я не наблюдал.

    Попробуйте протестировать распаковку другой библиотекой, возможно проблема в libzip.

    Отпишитесь, пожалуйста, о результатах.

    Так же прогоните на всякий случай приложение ВАКом, вдруг readium или libzip его не пройдут, будет обидно узнать об этом перед паблишем.

    • Изменено Oleg Kurzov 7 апреля 2014 г. 13:30
    7 апреля 2014 г. 13:28
  • Ошибка была в readium, отписались разработчикам, но после проверки ВАКом выяснилось что неявно вызывается Win API и приложение не проходит проверку. Будем работать дальше над этой библиотекой, возможно общими усилиям доведем ее до ума.

    Пока же быстренько накидал на C# класс для работы с epub, возможно когда-нибудь выложим его на codeplex или github.

    9 апреля 2014 г. 18:27
  • Успехов!

    Хорошо что заранее это выяснили. Мы как-то узнали прямо перед паблишем, что Ionic архиватор ВАК не проходит :)

    9 апреля 2014 г. 19:11