Сохраните загруженный gzip для дальнейшего использования React JS - PullRequest
1 голос
/ 02 мая 2020

Я пытался написать код React JS, который загружал бы gzip-файл с сервера один раз в день, а если файл уже был загружен сегодня - используйте загруженный.

Код для загрузки файлы были довольно просты, и это работает.

import FileSaver from 'file-saver'

const today = () => (new Date().toISOString().slice(0, 10))

const schedules = () => concat(
    ...config.epgUrls.map(
        (url) =>
            ajax({
                url,
                method: 'GET',
                responseType: 'blob'
            })
    )
)

export const saveChannelsEpic =
    (action$) =>
        action$.pipe(
            ofType(SAVE_CHANNELS),
            mergeMap(
                () =>
                    schedules()
                        .pipe(
                            pluck('response'),
                            map((gzipped) => FileSaver.saveAs(gzipped, `${today()}.gz`)),
                            map(() => saveChannelsFulfilled()),
                            catchError((err) => {
                                console.table(err.message)
                                saveChannelsFailed(err.message)
                                return EMPTY
                            })
                        )
            )
        )

Проблема начинается, когда я хочу прочитать ее из файловой системы (фактически из папки загрузок браузера). Может ли кто-нибудь, пожалуйста, посоветовать? Я знаю, что браузеры ограничены в доступе к файловой системе, но есть ли обходной путь? Я имею в виду доступ к 'file: // C: /Users/MyUser/Downloads/*.gz' или что-то вроде этого.

ps Я бы с удовольствием сохранил файл в localStorage, но, похоже, есть предел ~ 8 МБ. Мои файлы разархивированы на ~ 100 МБ и разархивированы на ~ 20 МБ.

...