I think I found my answer anyway, I have read the above in the past.
I looked at the database table "mdl_files" and picked out a set of values which would correspond to the parameters for the call. This worked.
I have also created a method for the upload, which currently is not tested but logically should work when uploading a Base64 uuencoded file.
I have included all the webservice calls for completeness in the library, despite the following problem.
Both the webservices regarding files, the parameters required can only be known if you have access to the database directly from the device which is making the webservice call, which in most cases is no.
There are other webservice calls which have the same issue. As an example, gaining the "roleid" and "contextid" to be able to enrol a user on a course. Currently I have to extract the data from our MIS for staff, students and classes, then create the user accounts and classes using webservices, but the final stage, allocating staff and students to classes is done by setting up another database and doing a "database enrol".
By the way, the library I've written is for Java and calls the Moodle 2.2 webservices including the ones which are now deprecated for backwards compatibility. The current version is on Sourceforge, although it needs more documentation and error checking etc.