Как получить папку/файл в локальном проекте с помощью javascript?

У меня есть локальный веб-проект с классическими папками (css, js и т. д.).

У меня есть «специальная» папка в этом же проекте на том же уровне, что и папки js или css. Эта специальная папка представляет собой просто zip-папку, внутри которой находятся текстовые файлы.

В одном из моих файлов javascript мне нужно будет получить доступ к содержимому (некоторым текстовым файлам) этой специальной папки. Я использую JSZip для чтения этого zip-файла.

Я пытаюсь выполнить это, используя URL-адрес, но это не работает.

var zip = new JSZip();
var specialFolder = "starter/special.zip";

zip.loadAsync( specialFolder).then(function(zip){
  <<< ERROR HERE >>>>
});

person Sushi    schedule 15.05.2017    source источник
comment
<<< ERROR HERE >>>> — А что написано в сообщении об ошибке?!   -  person Quentin    schedule 15.05.2017
comment
@Quentin говорит: Uncaught (в обещании) Ошибка: не удается найти конец центрального каталога: это zip-файл?   -  person Sushi    schedule 15.05.2017
comment
Он есть на сервере?   -  person evolutionxbox    schedule 15.05.2017
comment
Если ввести путь в адресной строке, он скачивается?   -  person epascarello    schedule 15.05.2017
comment
@evolutionxbox Все это на местном   -  person Sushi    schedule 15.05.2017


Ответы (1)


Вы передаете имя файла в качестве содержимого zip. В документе loadAsync показано, что вы должны передавать контент , а не имя файла.

пример чтения файла показывает загрузку содержимого через JSZipUtils.getBinaryContent, а затем передать его в loadAsync:

JSZipUtils.getBinaryContent('path/to/content.zip', function(err, data) {
    if(err) {
        throw err; // or handle err
    }

    JSZip.loadAsync(data).then(function () {
        // ...
    });
});

Повторите ваш комментарий:

Все это есть в местных

Если под «местным» вы подразумеваете localhost, это нормально. Если под «локальным» вы подразумеваете, что используете URL-адрес file://, во многих браузерах ajax не будет работать, и загрузка данных будет невозможна. Вместо этого используйте процесс локального веб-сервера (простой процесс легко установить и использовать) и используйте localhost.

person T.J. Crowder    schedule 15.05.2017
comment
Спасибо за ответ, да, когда я говорю «локальный», это URL-адрес файла: // - person Sushi; 15.05.2017
comment
@Sushi: Да, некоторые браузеры (Firefox) позволяют использовать ajax для таких локальных файлов, другие (Chrome) — нет. - person T.J. Crowder; 15.05.2017
comment
Да, любое другое решение, кроме использования localhost, пожалуйста? - person Sushi; 16.05.2017
comment
@Sushi: используйте Firefox или другой браузер, который позволяет выполнять ajax для file:// URL-адресов. - person T.J. Crowder; 16.05.2017
comment
Да, это хорошо работает в Firefox, поэтому все браузеры не могут использовать ajax? - person Sushi; 16.05.2017
comment
@Sushi: Нет. Как я уже сказал выше, некоторые браузеры (например, Chrome) не поддерживают ajax из file:// URL-адресов. - person T.J. Crowder; 16.05.2017
comment
Хорошо, большое спасибо, я размещу свое веб-приложение, поэтому оно будет использовать протокол https, а это значит, что у меня не будет проблем, верно? - person Sushi; 18.05.2017