JavaScript / jQuery для загрузки файла через POST с данными JSON

Надеюсь, это сработает. Удалите URL и сведения о браузере веб-драйвера в модулях

class_name: AcceptanceTester
modules:
  enabled:
    - WebDriver
    - Db
    - Filesystem
config:
  PhpBrowser:
   url: 'http://amazon-ce.localhost.tom/'
WebDriver:
   url: 'http://amazon-ce.localhost.tom/'
   browser: chrome
Db:
  dsn: 'mysql:dbname=myDb;host=127.0.0.1'
  user: 'root'
  password: ''
241
задан cezar 12 May 2017 в 03:33
поделиться

4 ответа

Найденный им где-нибудь давным-давно и он работает отлично!

let payload = {
  key: "val",
  key2: "val2"
};

let url = "path/to/api.php";
let form = $('<form>', {'method': 'POST', 'action': url}).hide();
$.each(payload, (k, v) => form.append($('<input>', {'type': 'hidden', 'name': k, 'value': v})) );
$('body').append(form);
form.submit();
form.remove();
0
ответ дан 23 November 2019 в 03:16
поделиться

Решение

Вложение Довольного Расположения , кажется, работает на меня:

self.set_header("Content-Type", "application/json")
self.set_header("Content-Disposition", 'attachment; filename=learned_data.json')

Обходное решение

application/octet-stream

у меня было что-то подобный случай со мной с JSON для меня на сторона сервера , я устанавливал заголовок на сам set_header ("Тип контента", " application/json") однако, когда я изменил его на:

self.set_header("Content-Type", "application/octet-stream")

Это автоматически загрузило его.

Также знают, что для файла для тихого хранения суффикса .json Вам будет нужно к нему на заголовке имени файла:

self.set_header("Content-Disposition", 'filename=learned_data.json')
0
ответ дан 23 November 2019 в 03:16
поделиться

Короче говоря, нет более простого способа. Вам нужно сделать еще один запрос к серверу, чтобы показать файл PDF. Хотя есть несколько альтернатив, но они не идеальны и не будут работать во всех браузерах:

  1. Посмотрите на схему URI данных . Если двоичных данных мало, возможно, вы можете использовать javascript для открытия окна, передавая данные в URI.
  2. Единственным решением для Windows / IE было бы наличие элемента управления .NET или FileSystemObject для сохранения данных в локальной файловой системе и открытия их оттуда.
8
ответ дан 23 November 2019 в 03:16
поделиться

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

Так что в зависимости от того, как сделан звонок. (будь то браузер или вызов веб-службы), вы можете использовать их комбинацию, отправив URL-адрес в браузер и отправив необработанные данные любому другому клиенту веб-службы.

2
ответ дан 23 November 2019 в 03:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: