Загрузка файла пользовательского интерфейса React/ Materiel с использованием серверной части REST API

мы уже видели, как скачать файл с помощью REST API на предыдущем (https://medium.com/@damureddy/download-a-file-from-springboot-rest-service-c10700f3e88d) теперь будем интегрировать REST API с React

Ниже приведен код, реализованный с использованием пользовательского интерфейса ReactJS+Material. В этом разделе рассматривается только код загрузки файла.

импортировать React из «реагировать»;

импортировать PropTypes из «prop-types»;

импортировать {withStyles} из «@material-ui/core/styles»;

импортировать таблицу из «@material-ui/core/Table»;

импортировать TableBody из «@material-ui/core/TableBody»;

импортировать TableCell из «@material-ui/core/TableCell»;

импортировать TableHead из «@material-ui/core/TableHead»;

импортировать TableRow из «@material-ui/core/TableRow»;

импортировать Paper из «@material-ui/core/Paper»;

импортировать аксиомы из «аксиос»;

импортировать {Button} из «@material-ui/core»;

константные стили = тема =› ({

корень: {

ширина: «100%»,

marginTop: тема.spacing.unit * 3,

переполнениеX: «авто»

},

Таблица: {

минШирина: 700

}

});

постоянные данные = [

{

заголовок: «Скачать файл-1»,

описание: «Расширенный двусторонний альянс»,

изображение: «Скачать файл-1.json»,

цена: «$74,96»

},

{

заголовок: «Скачать файл-2»,

описание: «Автоматизированная функция, управляемая спросом»,

изображение: «Скачать файл-2.json»,

цена: «$92,80»

},

{

title: «Скачать файл-3»,

описание: «Обратное контекстное групповое ПО»,

изображение: «Скачать файл-3.json»,

цена: «11,03$»

},

{

заголовок: «Скачать файл-4»,

описание: «Цифровая веб-иерархия»,

изображение: «Скачать файл-4.json»,

цена: «$42,72»

},

{

заголовок: «Скачать файл-5»,

описание: «Многоуровневый исполнительный графический интерфейс»,

изображение: «Скачать файл-5.json»,

цена: «35,49 долларов США»

}

];

класс SimpleTable расширяет React.Component {

конструктор (реквизит) {

супер (реквизит);

это.состояние = {

значения:данные

};

}

handleClick = (e) =› {

e.preventDefault();

console.log('Ссылка была нажата.');

console.log(это.состояние.значения);

// alert('Ссылка была нажата.');

// axios.get(‘/DwonlodedDataExport’).then(response =› {

// console.log(ответ)

// })

аксиос({

URL-адрес: ‘/files/saveJson’,

метод: «ПОЛУЧИТЬ»,

responseType: ‘blob’, // важно

}).then((ответ) =› {

const url = window.URL.createObjectURL (новый BLOB-объект ([response.data], {тип: «application/json»}));

константная ссылка = document.createElement('a');

ссылка.href = URL-адрес;

link.setAttribute('скачать', 'JSonfile');

document.body.appendChild (ссылка);

ссылка.щелчок();

});

};

handleClick1 = (e) =› {

e.preventDefault();

console.log('Ссылка была нажата.');

// alert('Ссылка была нажата.');

// axios.get(‘/DwonlodedDataExport’).then(response =› {

// console.log(ответ)

// })

аксиос({

URL-адрес: ‘/downLoadZIPFile’,

метод: «ПОЛУЧИТЬ»,

responseType: ‘blob’, // важно

}).then((ответ) =› {

const url = window.URL.createObjectURL (новый BLOB-объект ([response.data], {type: «application/octet-stream», responseType: «arraybuffer»}));

константная ссылка = document.createElement('a');

ссылка.href = URL-адрес;

link.setAttribute('скачать', 'JSONSearchResultsData.zip');

document.body.appendChild (ссылка);

ссылка.щелчок();

});

};

отображение данных () {

если (это.состояние.значения.длина!==0){

возвращение (

‹див›

‹див›

‹Название класса бумаги›

‹Имя класса таблицы›

‹Заголовок стола›

‹Строка таблицы›

‹TableCell align="center"›VIN‹/TableCell›

‹TableCell align="center"›Файл Nmae‹/TableCell›

‹TableCell align="center"›Цена‹/TableCell›

‹/TableRow›

‹/TableHead›

‹ТаблицаBody›

{this.state.values.map(строка =› (

‹TableRow key={row.id}›

‹TableCell align="center"›{row.title}‹/TableCell›

‹TableCell align="center"›

‹a href="" onClick={this.handleClick}›{row.image}‹/a›

‹/TableCell›

‹TableCell align="center"›{row.price}‹/TableCell›

‹/TableRow›

))}

‹/TableBody›

‹/дел›

‹див›

‹ Вариант кнопки = «содержится» цвет = «основной» alignitems = «центр» onClick = {this.handleClick1}

size="большой" style={{margin:20}}›

Скачать все файлы

‹/дел›

‹/дел›

);

// console.log(this.state.values.length)

}

}

оказывать(){

//const { классы, значения } = this.props;

возвращение (

‹див›

{this.dataDisplay()}

‹/дел›

);

}

}

SimpleTable.propTypes = {

классы: PropTypes.object.isRequired

};

экспортировать по умолчанию withStyles (стили) (SimpleTable);