如何在URL中使用Base64格式发送文件

时间:2019-01-02 09:38:49

标签: javascript xml api file zoho

我正在研究Zoho recruit API candidates Module。它的文档指定了我需要在URL中发送的XML字段及其数据类型。 对于文本字段,它工作正常。但是对于附件,它显示为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。

根据documentation,我应该发送这样的请求  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) );
  }

总而言之,我只想知道Zoho所指的数据类型Upload Text的含义

0 个答案:

没有答案