Я размещаю статический веб-сайт на Amazon S3. В моем ведре также хранятся файлы .txt, .pdf, .svg. Я хочу отобразить список этих файлов (только имена без содержимого) на моем веб-сайте html с помощью javascript. Поскольку пользователи могут загружать файлы в корзину, имена всегда меняются. Вот почему я хочу их перечислить. И я не хочу перечислять все файлы вместо того, чтобы показывать файл html, а показывать файл html с таблицей, в которой перечислены файлы из определенной папки в корзине.
Я не использую nodejs только js для браузеров. Я стараюсь не использовать новые модули. Проект должен оставаться простым.
Я уже читал руководства по использованию модулей nodejs, таких как 'fs', в браузере с помощью browserify. Мне не удалось это или какие-либо другие идеи, которые я нашел.
Я читал кое-что о FileSystemDirectoryReader для js, но это пока еще не поддерживается. Отвечает ли WebKitFileSystem моим потребностям? Я понял, что большинство API файловой системы работают с виртуальными каталогами, а не с нужным мне каталогом.
Теперь мне интересно, действительно ли мне нужно что-то вроде модулей npm, поскольку я не хочу получать доступ к файловой системе клиента, а к моей собственной файловой системе на S3. Я уже прочитал данные из этих файлов с помощью XMLHttpRequest, но могу ли я просто перечислить имена?
Было бы здорово, если бы у меня был код вроде: вар arrFiles = []; arrFiles = readFiles ("./ файлы / *");
Другой подход заключается в использовании AWS Lambda для чтения всех имен файлов, сохранения их в виде списка в текстовом файле и чтения этого файла с помощью js для печати имен на веб-сайте. Кажется сложным.
Если в этом есть смысл. заранее спасибо
хорошо спасибо :). но почему тогда я могу читать содержимое этих файлов, а не имена всех файлов вместе?
@TamDo - потому что это принципиально разные вещи, с разными последствиями для безопасности, и одно разрешено в браузерах, а другое - нет. Возможно, вам удастся настроить свой веб-сайт S3 так, чтобы он имел страницу «индекса» (довольно стандартная функция для веб-серверов, но S3 - другой зверь). Если вы можете, вы можете запросить и проанализировать эту страницу с помощью кода JavaScript в браузере. Но я не знаю о хостинге сайтов S3, поэтому не знаю, возможно ли это.
хорошо, я не думал об этом. спасибо за ответы. Я попробую лямбда-решение aws.
Он выглядит как вы можете настроить индексный документ, но поскольку он будет отображаться, когда кто-то зайдет в корень вашего сайта, вы, вероятно, не захотите идти этим путем. Лямбда или, откровенно говоря, просто файл, поддерживаемый вручную, лучше всего подходит для вас.
jup этот индексный документ уже настроен, потому что его должны видеть пользователи сайта, когда они вводят URL-адрес корзины
Какой интерфейсный фреймворк вы используете? Потому что можно перечислить файлы в папке или ведре
Я фактически не использую какую-либо структуру функциональности внешнего интерфейса. просто базовый js с библиотекой jquery
Вы можете проверить эту библиотеку. Я не являюсь автором, поэтому задавайте вопросы автору. github.com/rufuspollock/s3-bucket-listing
Возможный дубликат Список каталогов на статическом веб-сайте S3



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


С AWS Мобильный интерфейс командной строки AWS и aws-ampify это возможно. Там отличная документация и примеры сайт
По сути, вы создаете мобильный концентратор aws, настраиваете ведро S3, когнитивно, Dynamodb и любые другие службы aws, которые вам понадобятся.
Сначала установите AWS mobile cli с node js
npm install -g awsmobile-cli
настроить его.
awsmobile configure
инициализировать свой проект
awsmobile init
один раз, чем установить пакет узла aws-amplify в свой проект
npm i install aws-amplify
Импортируйте необходимые модули и настройте их.
import Amplify, { Storage } from 'aws-amplify';
import aws_exports from './aws-exports';
Amplify.configure(aws_exports);
Наконец, просто вызовите функцию List, она выведет список ключей по указанному пути.
Storage.list('photos/')
.then(result => console.info(result))
.catch(err => console.info(err));
Вы можете выполнять различные функции, такие как загрузка, загрузка и удаление. Они обслуживаются и поддерживаются командой AWS и не ограничиваются только S3.
Они совместимы как с Angular, так и с react js.
Спасибо за ответ. Я не использую nodejs, Angular или React. Поэтому я предпочитаю использовать простой класс AWS Lambda AWS.S3, который, как я выяснил, поддерживает метод listObjectsV2.
Вы можете использовать его с традиционным javascript с тегом script без необходимости использования angular или react js. Но способ Lamdba проще. Удачи и удачного кодирования
Теперь я сгенерировал содержимое таблицы с помощью лямбда-функции.
В этой лямбда-функции я использую класс aws.s3 и listObjectsV2 (). Он считывает все данные в определенной папке. Я записываю имена всех найденных файлов в текстовый файл, который хранится в ведре.
Файл js использует запрос XMLHttp для чтения этого текстового файла при каждой перезагрузке страницы. Таким образом, он получает содержимое папки корзины и может записывать имена в таблицу. Лямбда-функция всегда срабатывает, когда я возвращаюсь на главную страницу своего веб-сайта, где отображается таблица.
Браузеры не могут получить доступ к файловой системе сервера без помощи сервера, для этого вам определенно понадобится код на стороне сервера.