WS API core_files_upload and Users Avatars

WS API core_files_upload and Users Avatars

by Denis CARON -
Number of replies: 3
Hi everybody,
I'm trying to automatically integrate Moodle users and their courses with our ERP...
WS API is great and can answer all my problem except one...

How to upload pictures avatars to each my users ?
It's possible to push ZIP files in web interface Admin>Users>Accounts>Avatars ...

So I suppose I have to use core_files_upload but,
- what parameters to use ? 
- how to say "no update" and "use username as filename" ?
- and do I have to push ZIP with multiple pictures or only one at a time as ZIP, JPG, GIF ou PNG ?

Thanx for answers if there are !
Best Regards
Average of ratings: -
In reply to Denis CARON

Re: WS API core_files_upload and Users Avatars

by Denis CARON -
So, I've found that this is possible by core_files_upload always return error :'(

My Request content :
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="https://xxx.xxx/webservice/soap/server.php?wstoken=xxx">
<soapenv:Header/>
<soapenv:Body>
<ser:core_files_upload soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<component xsi:type="xsd:string">user</component>
<filearea xsi:type="xsd:string">draft</filearea>
<itemid xsi:type="xsd:int">0</itemid>
<filepath xsi:type="xsd:string">/</filepath>
<filename xsi:type="xsd:string">4400.png</filename>
<filecontent xsi:type="xsd:string">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</filecontent>
<contextlevel>user</contextlevel>
<instanceid>4400</instanceid>
</ser:core_files_upload>
</soapenv:Body>
</soapenv:Envelope>

And the server answer :
HTTP/1.1 500 Internal Service Error

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>Receiver</faultcode>
<faultstring>Fichier non spécifié | ERRORCODE: nofile</faultstring>
<faultactor>nofile</faultactor>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
In reply to Denis CARON

Re: WS API core_files_upload and Users Avatars

by Denis CARON -
Here is the solution :

You musn't use userid of the user you want to push file but the userid of webservice connected user !
Then it works well, and you get this as response :

<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https:/xxx.xxx/webservice/soap/server.php?wstoken=xxxx" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:core_files_uploadResponse>
<return xsi:type="ns1:webservices_struct_class_000004">
<contextid xsi:type="xsd:int">24303</contextid>
<component xsi:type="xsd:string">user</component>
<filearea xsi:type="xsd:string">draft</filearea>
<itemid xsi:type="xsd:int">590650280</itemid>
<filepath xsi:type="xsd:string">/</filepath>
<filename xsi:type="xsd:string">4400.jpg</filename>
<url xsi:type="xsd:string">https://xxx.xxx/draftfile.php/24303/user/draft/590650280/4400.jpg</url>;
</return>
</ns1:core_files_uploadResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
You can then use itemid with this other command to link the uploaded file to your user : core_user_update_picture
In reply to Denis CARON

Re: WS API core_files_upload and Users Avatars

by Denis CARON -
Will be happy to help if you got problems with this particular subject but for other webservice question about XML / SOAP requesting.