Я новичок в топоре ios и реагирую. Я использую библиотеку FilePond для загрузки. Я хочу отправить токен с топором ios для этой загрузки, но он не работает ... У вас есть идея, потому что я использую axios.create({
в processFile
функции, а в другом обсуждении я видел только axios({headers
но мне нужно использовать interceptors.request.use((config)
для отправки токена ... Большое спасибо :)
function processFile(fieldName, file, metadata, load, error, progress, abort) {
// FormData is a Web API that creates a HTML <form> element.
// set data
const formData = new FormData();
console.log('dans le processFile');
formData.append('file', file, file.name);
// related to aborting the request
const CancelToken = axios.CancelToken
const source = CancelToken.source();
// the request itself
//axios({
const APIUploadPdf=axios.create({
headers: {
'Accept': 'application/json;charset=UTF-8',
'content-type': 'application/x-www-form-urlencoded'
},
method: 'post',
url: Config.pdfServer,
data: formData,
cancelToken: source.token,
onUploadProgress: (e) => {
// updating progress indicator
progress(e.lengthComputable, e.loaded, e.total);
}
}).then(response => {
// passing the file id to Filepond
load(response.data.data.id)
}).catch((thrown) => {
if (axios.isCancel(thrown)) {
console.log('Request cancelled', thrown.message);
} else {
// handle error
}
});
// send a token
APIUploadPdf.interceptors.request.use((config) => {
return new Promise((resolve, reject) => {
if(Config.token) {
this.token = Config.token;
Config.token = null;
}
var timeNow = new Date().getTime();
if (this.token.access_token) {
const accessTokenExp = jsrsasign.KJUR.jws.JWS.parse(this.token.access_token);
//check token
var accessTokenLifeTime = new Date(accessTokenExp.payloadObj.exp * 1000).getTime();
if ( accessTokenLifeTime > timeNow) {
config.headers.common['Authorization'] = `${this.token.access_token}`;
resolve(config);
}
else {
var refreshTokenExp = jsrsasign.KJUR.jws.JWS.parse(this.token.refresh_token);
var timeExpRefresh = new Date(refreshTokenExp.payloadObj.exp * 1000).getTime();
var accessTokenTimeExpire = accessTokenLifeTime - 600000;
//ask a new refreshToken
if ((timeNow <= timeExpRefresh && accessTokenLifeTime < timeNow)|| (accessTokenTimeExpire <= timeNow && timeNow <= accessTokenLifeTime)) {
this.getTokens(this.token.refresh_token, config, resolve, reject);
} else if(timeNow >= timeExpRefresh){
console.log('not available anymore');
}
}
} else {
alert('action impossible');
}
}, error => Promise.reject(error));
}, function (error) {
console.log(error);
return Promise.reject(error);
});
}
{<div className={"div-file-component"} style={!Config.isAdmin ? {marginTop: 2 + '%'} : {}}>
{
<FilePond
server={{
process:(fieldName, file, metadata, load, error, progress, abort) => {
processFile(fieldName, file, metadata, load, error, progress, abort);
}
}}
//server={{process: Config.pdfServer }}
oninit={() => handleInit()}
onupdatefiles={(fileItems) => {
// Set current file objects to this.state
setFile(fileItems.map(fileItem => fileItem.file));
}}
instantUpload={false}
onprocessfile={(error, file)=>{
console.log('PROCESSED', file, 'SERVER_ID', file.serverId);
console.log('ERROR PROCESSED', error);
}}
/>
}