Hello again @emotality - we fixed our project.
For us it was a file upload issue outside of Nova but I think the two issues are the same.
When uploading a file the ->store() method uses Illuminate\Http\UploadedFile. By default this hashes the name and then tries to add back the extension by working out the mime type from the contents of the file itself - which doesn't always work. The docs explain it like this:
The UploadedFile class also contains methods for accessing the file's fully-qualified path and its extension. The extension method will attempt to guess the file's extension based on its contents. This extension may be different from the extension that was supplied by the client
https://laravel.com/docs/5.8/requests#files
The fix for us was to use the storeAs method instead and use the original extensions as part of the name:
->storeAs(
'files',
sha1(time()) . '.' . $file->getClientOriginalExtension()
);
As Nova also uses Illuminate\Http\UploadedFile you should be able to add an override in your model to use storeAs in the same way - something like:
public function fields(Request $request)
{
return [
File::make('File')
->storeAs(function (Request $request) {
// something similar to the above
})
];
}
I should credit @edoc for this as he mainly figured it out!