This is why in my rather convoluted update process I ask people to use I have them upload the primary release zip files even if they are already on that release.
And updating from 1.x is even more involved.
In this case I would update to 2.0 first, and then 2.05.1 and then 3.0 and then 3.1.1. The last 3 of those are quite easy once you're on 2.0. It may seem tedious to do it this way, but it also ensures you have all the needed files from all the releases along the way.
First start with the 2.0 bin file. Upload it to the /sys folder and then send M997 to flash it if it doesn't detect it automatically.
https://github.com/Duet3D/RepRapFirmware/releases/download/2.0/Duet2CombinedFirmware.bin
At this point you can upload the web interface update zip file to the /sys folder, as is, don't extract it.
https://github.com/Duet3D/RepRapFirmware/releases/download/2.0/DuetWebControl-1.21.1.zip
Now you should be able to upload the modern release zip files, as is, don't extract it, straight to the /sys folder. It should detect and update the firmware and web interface and reboot.
Upload these zip files, one at a time in the system tab. Don't extract them first. Reboot after each. Use M115 in the gcode console to verify the firmware has been applied.
https://github.com/Duet3D/RepRapFirmware/releases/download/2.05.1/Duet2Firmware-2.05.1.zip
https://github.com/Duet3D/RepRapFirmware/releases/download/3.0/Duet2and3Firmware-3.0.zip
https://github.com/Duet3D/RepRapFirmware/releases/download/3.3/Duet2and3Firmware-3.3.zip
https://github.com/Duet3D/RepRapFirmware/releases/download/3.4.5/Duet2and3Firmware-3.4.5.zip