import FormData from 'form-data';
import fs from 'fs';
// Node.js environment: Upload local file
const formData = new FormData();
formData.append('file', fs.createReadStream('/path/to/your/file.jpg'));
const response = await fetch('https://app.teable.ai/api/table/__tableId__/record/__recordId__/__fieldId__/uploadAttachment', {
method: 'POST',
headers: {
'Authorization': 'Bearer __token__',
...formData.getHeaders()
},
body: formData
});
console.log(await response.json());
// Upload URL (works in both Node.js and browser environments)
const formDataUrl = new FormData();
formDataUrl.append('fileUrl', 'https://example.com/image.jpg');
const responseUrl = await fetch('https://app.teable.ai/api/table/__tableId__/record/__recordId__/__fieldId__/uploadAttachment', {
method: 'POST',
headers: {
'Authorization': 'Bearer __token__',
...formDataUrl.getHeaders()
},
body: formDataUrl
});
console.log(await responseUrl.json());
// Browser environment: Upload file
// Assuming there's a file input element: <input type="file" id="fileInput">
document.getElementById('fileInput').addEventListener('change', async (event: Event) => {
const fileInput = event.target as HTMLInputElement;
const file = fileInput.files?.[0];
if (file) {
const formData = new FormData();
formData.append('file', file);
const response = await fetch('https://app.teable.ai/api/table/__tableId__/record/__recordId__/__fieldId__/uploadAttachment', {
method: 'POST',
headers: {
'Authorization': 'Bearer __token__'
},
body: formData
});
console.log(await response.json());
}
});