mirror of https://github.com/nocodb/nocodb
Raju Udava
1 year ago
1 changed files with 140 additions and 0 deletions
@ -0,0 +1,140 @@
|
||||
--- |
||||
title: 'Upload via API' |
||||
description: 'Upload files locally present or from public remote URL via API' |
||||
position: 1600 |
||||
category: 'Developer Resources' |
||||
menuTitle: 'Upload via API' |
||||
--- |
||||
|
||||
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/v1/db/storage/upload', |
||||
data: formData, |
||||
headers:{ |
||||
'Content-Type':`multipart/form-data;`, |
||||
'xc-auth': 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/v1/db/data/noco/${project_id}/${table_id}`, |
||||
data: row, |
||||
headers: { |
||||
'xc-auth': 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/v1/db/storage/upload-by-url', |
||||
data: URL_array, |
||||
headers: { |
||||
'xc-auth': 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/v1/db/data/noco/${project_id}/${table_id}`, |
||||
data: row, |
||||
headers: { |
||||
'xc-auth': xc_auth |
||||
} |
||||
}); |
||||
} |
||||
|
||||
(async () => { |
||||
await uploadByUrlExample(); |
||||
})(); |
||||
``` |
Loading…
Reference in new issue