Как отправить файл в формате Base64, используя в URL - PullRequest
0 голосов
/ 02 января 2019

Я работаю над модулем кандидатов в Zoho recruit API. .Его документация определяет поля XML и типы данных, которые мне нужно отправить в URL. для текстовых полей, работает нормально.Но для вложений написано data type => Upload Text. Теперь я не понимаю, что означает этот тип данных upload text Я попытался преобразовать файл в текст, используя следующий код:

  $("form").submit((event) => {
    event.preventDefault();
    var file = $('#fileInp').prop('files')[0];
    readFileContent(file).then(content => {
        createCandidate(content);
    }).catch(error => console.log(error))
  });

function readFileContent(file) {
    const reader = new FileReader()
    return new Promise((resolve, reject) => {
      reader.onload = event => resolve(event.target.result)
      reader.onerror = error => reject(error)
      reader.readAsText(file)
    })
  }

но это не сработало, тогда я попытался преобразовать файл в формат base64 и отправить данные в API, но это выбрасывает 414.

Согласно документации Я должен отправить запрос, как это https://recruit.zoho.com/recruit/private/xml/Candidates/addRecords?authtoken=AuthToken&scope=recruitapi&duplicateCheck=( 1 OR 2 )&version=4&xmlData=[XML Data]

Вот как я это делаю.(Эта функция вызывается, когда запускается событие отправки формы)

let createCandidate = (data) => {
 let xmlString = ''+
      '<Candidates>'+
        '<row no="1">'+
          '<FL val="Source">Zen3 Website</FL>'+
          '<FL val="Current Employer">Your Company</FL>'+
          '<FL val="First Name">Zain</FL>'+
          '<FL val="Last Name">Smith</FL>'+
          '<FL val="Email">zain@test.com</FL>'+
          '<FL val="Phone">1234567890</FL>'+
          '<FL val="Home Phone">0987654321</FL>'+
          '<FL val="Other Phone">1212211212</FL>'+
          '<FL val="Fax">02927272626</FL>'+
          '<FL val="Mobile">292827622</FL>'+
          '<FL val="Highest Qualification Held">MCA</FL>'+
          '<FL val="Resume">'+data+'</FL>'+ // data accepts the 'File Upload text that is returned by readFileContent()'
        '</row>'+
      '</Candidates>';
    const URL = `https://recruit.zoho.com/recruit/private/xml/Candidates/addRecords?authtoken=${AUTH_TOKEN}&scope=recruitapi&duplicateCheck=2&version=4&xmlData=${xmlString}`;
    let proxyUrl = 'https://cors-anywhere.herokuapp.com/';
    axios.post(proxyUrl+URL).then( i => console.log(i) ).catch( e => console.log(e) );
  }

В общем, я просто хочу узнать значение типа данных Upload Text, который Zoho ссылается на

...