import FormData from 'form-data';
import fs from 'fs';
// Ambiente Node.js: caricamento di un file locale
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());
// Caricamento tramite URL (funziona sia in Node.js sia nel browser)
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());
// Ambiente browser: caricamento di un file
// Presuppone la presenza di un elemento di input per i file: <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());
}
});