Two bugs, both invisible until the news photo upload modal exercised them: the shared field template didn't recognise a custom multi-file widget (it fell through to a plain, useless text input), and the modal form itself had no enctype="multipart/form-data" -- so even a correctly rendered file input would have posted filenames only, never content.