Skip to main content
Version: Latest

Sample code to upload files via API is listed below. Assumes http://localhost:8080/ as the base URL for the API calls.

Upload local file

let axios = require("axios").default;
let FormData = require('form-data');
let fs = require('fs');

// Configurations
//
const project_id = '<Project Identifier>';
const table_id = '<Table Identifier>';
const xc_token = '<Auth Token>';
const file_path = '<Local File Path>';


// Insert Image
// @param image_path : local file path
// @return : JSON object to be used in insert record API for attachment field
//
async function insertImage (path) {
const formData = new FormData();
formData.append("file", fs.createReadStream(path));
const data = await axios({
url: 'http://localhost:8080/api/v2/storage/upload',
data: formData,
headers:{
'Content-Type':`multipart/form-data;`,
'xc-token': xc_token
},
method: 'post',

// Optional : storage file path
params: {"path": "somePath"}
});
return data;
}

// Insert record with attachment
// Assumes a table with two columns :
// 'Title' of type SingleLineText and
// 'Attachment' of type Attachment
//
async function uploadFileExample() {
let response = await insertImage(file_path);

let row = {
"Title": "2",
"Attachment": response.data
};

await axios({
method: 'POST',
url: `http://localhost:8080/api/v2/tables/${table_id}/records`,
data: row,
headers: {
'xc-token': xc_token
}
});
}

(async () => {
await uploadFileExample();
})();

Upload via URL

let axios = require("axios").default;
let FormData = require('form-data');
let fs = require('fs');

// Configurations
//
const project_id = '<Project Identifier>';
const table_id = '<Table Identifier>';
const xc_token = '<Auth Token>';

// URL array : URLs of files to be uploaded
const URLs = [{ url: '<URL1>' }, { url: '<URL2>' }];

// Insert Image
// @param URLs : [] containing public URL for files to be uploaded
// @return : JSON object to be used in insert record API for attachment field
//
async function insertImageByURL (URL_array) {
const data = await axios({
url: 'http://localhost:8080/api/v2/storage/upload-by-url',
data: URL_array,
headers: {
'xc-token': xc_token
},
method: 'post',

// Optional : storage file path
params: {"path": "somePath"}
});
return data;
}

// Insert record with attachment
// Assumes a table with two columns :
// 'Title' of type SingleLineText and
// 'Attachment' of type Attachment
//
async function uploadByUrlExample() {
let response = await insertImageByURL(URLs);

// Update two columns : Title and Attachment
let row = {
"Title": "3",
"Attachment": response.data
};

await axios({
method: 'POST',
url: `http://localhost:8080/api/v2/tables/${table_id}/records`,
data: row,
headers: {
'xc-token': xc-token
}
});
}

(async () => {
await uploadByUrlExample();
})();