appwrite/sdk-for-node

๐Ÿ› Bug Report: Request failed with status code 400 when saving file stream from busboy

Edijae opened this issue ยท 2 comments

๐Ÿ‘Ÿ 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?

@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