๐ Bug Report: Request failed with status code 400 when saving file stream from busboy
Edijae opened this issue ยท 2 comments
Edijae commented
๐ Reproduction steps
When i try to save a file stream received on my express server using busboy, it ends up failing.
const bb = busboy({headers:req.headers});
bb.on('file', async (name,stream,info) =>{
try {
let response = await api.getStorage().createFile(stream,[],[]);
console.log("file upload response\n" +JSON.stringify(response));
} catch (error) {
console.log("failed to save file. "+error.stack);
}
stream.on('data', (data) => {
console.log(`File [${name}] got ${data.length} bytes`);
}).on('close', () => {
console.log(`File [${name}] done`);
});
})
bb.on('field', (name, val, info) => {
console.log(`Field [${name}]: value: %j`, val);
});
bb.on('close', () => {
console.log(`close called`);
res.writeHead(200, { 'Connection': 'close' });
});
req.pipe(bb);
Error
Error: Request failed with status code 400
at createError (/app/node_modules/axios/lib/core/createError.js:16:15)
at settle (/app/node_modules/axios/lib/core/settle.js:17:12)
at IncomingMessage.handleStreamEnd (/app/node_modules/axios/lib/adapters/http.js:269:11)
at IncomingMessage.emit (node:events:377:35)
at endReadableNT (node:internal/streams/readable:1312:12)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
๐ Expected behavior
one should be able to save the stream directly without first saving it on a temporary file
๐ Actual Behavior
one cannot save the stream
๐ฒ Appwrite version
Version 0.10.x
๐ป Operating system
MacOS
๐งฑ Your Environment
No response
๐ Have you spent some time to check if this issue has been raised before?
- I checked and didn't find similar issue
๐ข Have you read the Code of Conduct?
- I have read the Code of Conduct
stnguyen90 commented
@Edijae the new versions of the SDKs have some helpers like InputFile.fromStream(stream, filename, size)
. Does that work for you?
Edijae commented
@stnguyen90 yes. that worked!. thank you