I would suggest reading the upgrade guide, it will likely have that issue covered.
Without more code it's hard to say, but there was a change made between version 2 and 3, regarding how you set the model, in version 2 you could do the whole form, but in version 3 you need to set the model on each input.
In Livewire 3, naming a method upload in your component is a "gotcha" that causes issues because "upload" is a reserved word used internally by Livewire for handling file uploads.
Laravel Livewire
Laravel Livewire
Using upload as a method name conflicts with Livewire's JavaScript-to-server communication, preventing your component from properly storing files or receiving them as null.
The Core Issue
Reserved Method/Property: You cannot use upload as a method or property name in your Livewire component class.
Why it fails: When a file is selected, Livewire's JS makes a request to a temporary "signed" URL. If you have a method named upload, it clashes with this process.
Common Error: The wire:submit or wire:click does not trigger the method, or the file input behaves unexpectedly.
Laracasts
Laracasts
+4
How to Fix It
Rename your upload() method to something else, such as save(), submit(), or store().