Hi Team
I created a Node.js script to upload attachments using FileApiService.
Here is my script:
var axios = require('axios');
var fs = require('fs');
establish_connection();
async function establish_connection()
{
axios.post('https://company_name.bpmonline.com/ServiceModel/AuthService.svc/Login',
{
"UserName":"xxxxxxx",
"UserPassword":"xxxxxxxxxxx"
}).then (function (response){
console.log('Imported credentials cookie from BPM Online!')
c=response.headers['set-cookie']
var bpm_loader=c[0]
bpm_loader = bpm_loader.replace('BPMLOADER=','')
bpm_loader=bpm_loader.split(';')[0]
var aspx_auth=c[1]
aspx_auth = aspx_auth.replace('.ASPXAUTH=','')
aspx_auth=aspx_auth.split(';')[0]
var bpm_csrf=c[2]
bpm_csrf = bpm_csrf.replace('BPMCSRF=','')
bpm_csrf=bpm_csrf.split(';')[0]
var user_name=c[3]
user_name = user_name.replace('UserName=','')
user_name=user_name.split(';')[0]
var auth = 'BPMLOADER='+bpm_loader+'; .ASPXAUTH='+aspx_auth+'; BPMCSRF='+bpm_csrf+'; UserName='+user_name+';';
console.log('Authentication Successful!')
upload_attachments(auth,bpm_csrf)
}).catch(error => {
console.log(error)
})
}
async function upload_attachments(auth,bpm_csrf) {
let myPdf = fs.readFileSync("./file_name.pdf");
let myData = myPdf.toString("base64");
let myBody = {
Name: "test.pdf",
Data: myData,
TypeId: '529bc2f8-0ee0-df11-971b-001d60e938c6',//This indicates that the type of the attachment is file
Version: "1",
Usr_reference_column_id: 'xxxxxguid_of_the_record_xxxxxxxx'
};
let options = {
method: "POST",
url: 'https://company_name.bpmonline.com/0/rest/FileApiService/Upload',
headers: {
"fileapi14998570381414":"",
"cache-control": "no-cache",
"Accept-Encoding": "gzip, deflate",
"Cache-Control": "no-cache",
Accept: "*/*",
"Content-Type": "application/json;odata=verbose",
Cookie:auth,
BPMCSRF:bpm_csrf,
"entitySchemaName":"Usr_id_of_the_file_section"
},
body: myBody,
json: true
};
request(options, function(error, response, body) {
if(!error)
{
console.log('Success!')
console.log(response)
}
else
{
console.log('Failed!')
console.log(error)
}
});
}
References:
1. https://community.bpmonline.com/questions/sending-blob-file-node
2. https://community.bpmonline.com/questions/upload-files-case
3. https://community.bpmonline.com/questions/how-upload-attachments-odata
4. https://community.terrasoft.ru/questions/realizacia-peredaci-pdf-dokumenta-po-protokolu-odata-s-ispolzovaniem-http-zaprosov
5. https://community.terrasoft.ru/questions/fileapiservice-zagruzka-dokumenta-v-faily-i-primecania-crm-sistemy
I am able to establish connection (Authorization is successful) and getting SUCCESS for the attachment. But in the response, I am receiving 'Request Error'.
Questions:
1. Is my URL correct?
2. Is the way I specified file section name correct?
3. Do I need to add/delete/change my request body?
4. Do I need to create a MODULE in ADVANCED SETTINGS?
NOTE: I am using BPM'Online Studio.