Загрузить файл из данных ответа API с помощьюact-admin - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь создать пользовательскую кнопку в панели приложений моей панели реакции-администратора, чтобы загрузить дамп базы данных. Ответ API - json, содержащий информацию о запросе и содержимое базы данных.

Как начать загрузку с клиента, используя поле json, содержащее данные? Я сделал это на данный момент:

const CustomAppBar = withStyles(styles)(({ classes, ...props }) => {
  const dumpDatabase = () => {
    fetch(config['api_url'] + '/dump', { method: 'GET' })
    .then(data =>  data.json())
    .then((json) => {
      console.log(json['data']);
    });
  }

  return (
    <AppBar {...props}>
      <Typography
            variant="inherit"
            color="inherit"
            className={classes.title}
            id="react-admin-title"
      />
      <span className={classes.spacer} />
      <Tooltip title="Dump Database">
        <IconButton color="inherit" onClick={dumpDatabase} >
          <SaveIcon />
        </IconButton>
      </Tooltip>
    </AppBar>
  );
});

console.log(json['data']); - это часть, которую я пытаюсь заменить для загрузки. У меня очень низкий опыт работы с reat-admin и javascript в целом ...

1 Ответ

0 голосов
/ 23 апреля 2020

Через некоторое время я нашел рабочее решение, которое вы можете использовать. Вы должны создать объект BLOB-объекта и назначить его ссылке, а затем автоматически щелкнуть его с помощью сценария.

dumpDatabase = () => {
    fetch(config['api_url'] + '/dump', { method: 'GET' })
    .then(data =>  data.json())
    .then(json => {
      if (json['result'] === 'success')
      {
          // Creating the blob file and its url
          var blob = new Blob([json['data']], {type: 'application/json'}); 
          let url = window.URL.createObjectURL(blob);

          var date = Moment(new Date()).format("YYYY_MM_DD-HH_mm_ss");

          // Creating the hyperlink and auto click it to start the download
          let link = document.createElement('a');
          link.href = url;
          link.download = 'dump_' + date + '.json';
          link.click();
      }
    });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...