Использование атрибута загрузки html для загрузки URL-адреса данных в виде файла, начинающегося с точки - PullRequest
0 голосов
/ 21 февраля 2019

Чтобы попытаться устранить пользовательские ошибки при настройке нашего API, я использую javascript для вызова ajax, чтобы получить ключ api зарегистрированного пользователя, а затем создаю для них ссылку для загрузки их ключа.в виде файла с именем '.apirc'

Ссылка в настоящее время выглядит следующим образом:

<a href="data:application/octet-stream;charset=utf-8,%7B%22url%22%3A%22https%3A%2F%2Fapi.domain.com%2Fv1%22%2C%22email%22%3A%22me%40domain.com%22%2C%22key%22%3A%22b1ah943fb1ah1b18b1ah71f9b1ah07cc%22%7D" download=".apirc">Download your .apirc file</a>

Я не тестировал подробно, но для большинства наших пользователей это будет работать, за исключением одногокритическая вещь: я не могу заставить его поставить начальную точку в имени файла, когда пользователь нажимает «Сохранить» в диалоговом окне запроса на загрузку.Это как раз одна из пользовательских ошибок, которые мы пытаемся помочь устранить (если бы мы могли также принудительно указать путь к файлу $ HOME, который был бы еще лучше, но я вполне уверен, что это невозможно ...?).

Я попробовал трюк с начальными и конечными точками в Windows, то есть download = ". Apirc.", Но он не работает, даже когда мой браузер запрашивает у меня имя файла, или когда я используюобычная ссылка на фактический файл с именем .apirc.Кажется, я не могу найти никакого трюка, который позволил бы мне создать файл с именем «.apirc» в диалоговых окнах загрузки / сохранения браузера;кажется, что единственный способ сохранить, а затем переименовать файл в «обычном» файловом менеджере, или открыть файл из браузера и сохранить его из результирующей программы (в этом случае мне нужно изменить тип данных какв противном случае браузер не знает, какую программу использовать для открытия файла).

Для получения информации о создании URL-адреса данных, на случай, если это уместно (хотя я думаю, что нет, поскольку я пытался загрузить'real' file): я пытался использовать data: text / plain, но это заставляет Chrome добавлять .txt к имени файла;использование данных: октет / поток позволяет мне быть ближе к тому, что я хочу во всех браузерах, которые предпочитают наши пользователи.Кроме того, мне может понадобиться изменить бит charset на что-то другое, например us-ascii.

Я думаю, это может быть случай «этого нельзя сделать» с помощью html или javascript (то есть front-конец).Если это так, и у кого-нибудь есть какие-то внутренние идеи (мне нужно сделать это в двух интерфейсах, один на основе Java и другой php), мне было бы интересно, чтобы меня указали в правильном направлении.

Цель состоит в том, чтобы уменьшить количество ошибок при передаче этого ключа на свои машины в виде файла с правильным именем в нужном месте, поэтому, если вы считаете, что я слишком близок к проблеме и пропустили более очевидное решение, не стесняйтесьукажите это!

...