mscdex / busboy

A streaming parser for HTML form data for node.js
MIT License
2.84k stars 213 forks source link

File event has not been triggered with nuxt 3 #352

Open HenriqueAurelio opened 7 months ago

HenriqueAurelio commented 7 months ago

image

My code is like this and I already used bus boy on nuxt 2 and express, but as you can see it on the screenshot the file event doesnt trigg

mscdex commented 7 months ago

Perhaps the request is using different headers for files. Beyond that, there's not much I can suggest. You'd have to ask on the nuxt project issue tracker or wherever.

HenriqueAurelio commented 6 months ago

Yea it was some different implementation on frontend thx, is there a way to check if the busboy found a error on receveing the file? Like a error listener event? Or I would have to send the size of file on body of the request and compare with size of file written after some time? Im saying after some time , because i tried to stop a request in the middle and didnt trigger the finish event listener.

mscdex commented 6 months ago

There would be no error unless you closed the busboy instance early for example. busboy does not inspect the data or anything like that.

If you want to handle either case, whether the form parsing was successful or not, you should be listening for the 'close' event instead. 'finish' is only emitted when the entire form was parsed successfully.

HenriqueAurelio commented 6 months ago

But like if the latency or there is some package loss in the middle of uploading the close event would catch that moment?

mscdex commented 6 months ago

Measuring latency is outside of the scope of this module. Packet loss is only a thing if you're using an unreliable transport, which is unlikely, even with something like HTTP/3.

A 'close' event will be emitted if the form data is malformed, including if you busboy.end() early. It will also be emitted if the form data was parsed completely and successfully. Use it when you want to do something whether parsing was successful or not. Use 'finish' only if you want to do something when the parsing was successful. Use 'error' if you want to detect when there is an error, this will then be followed by the 'close' event.

These events follow that of typical node.js streams.