FileService.svc methods and messages

UploadFile

This service allows uploading single file into content import temporary storage area. It returns unique identifier which can be used within AddMessage service to refer to the uploaded file for further processing.

We separate the upload of files from the creation of migrated content as the same file often appears in multiple areas of itslearning. Files can be created in multiple sections of itslearning, but only need be uploaded once.

Files are retained in the temporary area for 14 days and are then removed. They can be re-uploaded if required.

This is a synchronous message.


Please note that files are limited to 50 MB in size.


Following file extensions are denied for upload:

  • empty file extension

  • .exe

  • .com

  • .vb

  • .vbs

  • .vbe

  • .cmd

  • .bat

  • .ws

  • .wsf

  • .src

  • .shs

  • .pif

  • .hta

  • .jar

  • .js

  • .jse

  • .lnk


Input parameters

Name

Description

Type

Mandatory/Optional

SiteId

Site where action will be executed.

Integer

Optional

Content

File content.

Binary

Mandatory

Name

File name.

Text

Mandatory


Sample request with MTOM enabled:

Sample request (MTOM enabled)
<soapenv:Envelope xmlns:its="http://schemas.datacontract.org/2004/07/Itslearning.Integration.ContentImport.Services.Entities" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header><wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsse:UsernameToken wsu:Id="UsernameToken-47" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:Username>be1dec1e-ee20-4d96-9aaa-54c0a312b2d5</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">d4d65856-309f-4a97-9ce0-0f4e26f457b9</wsse:Password><wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">Gh4/u3mveBCddW9OaEfMcA==</wsse:Nonce><wsu:Created>2012-04-12T11:16:12.414Z</wsu:Created></wsse:UsernameToken></wsse:Security></soapenv:Header>
<soapenv:Body>
<tem:UploadFile>
<!--Optional:-->
<tem:fileMessage>
<!--Optional:-->
<its:Content><inc:Include href="cid:http://www.soapui.org/19115972647367" xmlns:inc="http://www.w3.org/2004/08/xop/include"/></its:Content>
<!--Optional:-->
<its:Name>1.log</its:Name>
</tem:fileMessage>
</tem:UploadFile>
</soapenv:Body>
</soapenv:Envelope>
[RAW BYTES TO BE ADDED HERE}

Sample request with MTOM disabled:

Sample request (MTOM disabled)
<soapenv:Envelope xmlns:its="http://schemas.datacontract.org/2004/07/Itslearning.Integration.ContentImport.Services.Entities" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header><wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsse:UsernameToken wsu:Id="UsernameToken-51" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:Username>be1dec1e-ee20-4d96-9aaa-54c0a312b2d5</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">d4d65856-309f-4a97-9ce0-0f4e26f457b9</wsse:Password><wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">DqDgbY/+WFlKwa8U3U8Sbg==</wsse:Nonce><wsu:Created>2012-04-12T11:38:40.731Z</wsu:Created></wsse:UsernameToken></wsse:Security></soapenv:Header>
<soapenv:Body>
<tem:UploadFile>
<!--Optional:-->
<tem:fileMessage>
<!--Optional:--> <its:Content>OC0yNS0yMDExLCAxNDoyNDoyOTogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KOC0yNS0yMDExLCAxNDoyNDoyOTogU1QgTWljcm9lbGVjdHJvbmljcyBGcmVlIEZhbGwgUHJvdGVjdGlvbiBJbnN0YWxsZXINCjgtMjUtMjAxMSwgMTQ6MjQ6Mjk6IFZlcnNpb246IDIuMDAuMTAuMzMsIE9TOiBXaW5kb3dzIDcgeDY0DQo4LTI1LTIwMTEsIDE0OjI0OjI5OiBNb2RlOiBJbnN0YWxsIDIuMDAuMTAuMzMNCjgtMjUtMjAxMSwgMTQ6MjQ6Mjk6IEZlYXR1cmVzIFNlbGVjdGlvbjogRGVmYXVsdA0KOC0yNS0yMDExLCAxNDoyNDoyOTogQ2hlY2tlZCBubyBwZW5kaW5nIHJlYm9vdHMsIGNvbnRpbnVpbmcuLi4NCjgtMjUtMjAxMSwgMTQ6MjQ6NTA6IENsZWFuaW5nIHVwIG9sZCBpbnN0YWxsYXRpb25zDQo4LTI1LTIwMTEsIDE0OjI0OjUwOiBDaGVja2luZyBSZWdpc3RyeQ0KOC0yNS0yMDExLCAxNDoyNDo1MjogRG9uZQ0KOC0yNS0yMDExLCAxNDoyNDo1MjogQ2hlY2tpbmcgZmlsZXMNCjgtMjUtMjAxMSwgMTQ6MjQ6NTI6IERvbmUNCjgtMjUtMjAxMSwgMTQ6MjQ6NTI6IENsZWFudXAgb2Ygb2xkIGluc3RhbGxhdGlvbnMgY29tcGxldGVkDQo4LTI1LTIwMTEsIDE0OjI0OjUyOiBTdGFydGluZyBJbnN0YWxsaW9uIG9mIERyaXZlcnMNCjgtMjUtMjAxMSwgMTQ6MjQ6NTI6IFNlbnNvciBkZXRlY3RlZDogU01PODgwMCwgaW50YWxsaW5nIGRyaXZlci4uLg0KOC0yNS0yMDExLCAxNDoyNTozNTogRElGeERyaXZlclBhY2thZ2VJbnN0YWxsIHN1Y2NlZWRlZCBhbmQgcmV0dXJuZWQgMA0KOC0yNS0yMDExLCAxNDoyNTozNTogQWRkZWQgZHJpdmVyIDEuMC4wLjE5IHRvIHJlZ2lzdHJ5DQo4LTI1LTIwMTEsIDE0OjI1OjM1OiBEcml2ZXIgaW5zdGFsbGF0aW9uIGNvbXBsZXRlZA0KOC0yNS0yMDExLCAxNDoyNTozNTogRG9uZSBJbnN0YWxsaW5nIERyaXZlcnMNCjgtMjUtMjAxMSwgMTQ6MjU6Mzg6IEluc3RhbGxpbmcgRnJlZSBGYWxsIFByb3RlY3Rpb24gQXBwbGljYXRpb24gLi4uDQo4LTI1LTIwMTEsIDE0OjI1OjM4OiBBZGRlZCBmZl9wcm90ZWN0aW9uIDIuMC4wLjYgdG8gcmVnaXN0cnkNCjgtMjUtMjAxMSwgMTQ6MjU6Mzg6IERvbmUNCjgtMjUtMjAxMSwgMTQ6MjU6Mzg6IEFkZGluZyBPRU0gcmVnaXN0cnkgZW50cmllcyAuLi4NCjgtMjUtMjAxMSwgMTQ6MjU6Mzg6IERvbmUNCjgtMjUtMjAxMSwgMTQ6MjU6Mzg6IEFwcGx5aW5nIFJlZ2lzdHJ5IHBhdGNoIC4uLg0KOC0yNS0yMDExLCAxNDoyNTozODogRG9uZQ0KOC0yNS0yMDExLCAxNDoyNTozODogT0VNIGludmVudG9yeSBkYXRhIHdyaXR0ZW4gdG8gdGhlIHJlZ2lzdHJ5DQo4LTI1LTIwMTEsIDE0OjI1OjM4OiBNYXJrZWQgcmVib290IHBlbmRpbmcNCjgtMjUtMjAxMSwgMTQ6MjU6NDU6IFJldHVybkNvZGU6IDMwMTANCjgtMjUtMjAxMSwgMTQ6MjY6Mzc6IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCjgtMjUtMjAxMSwgMTQ6MjY6Mzc6IFNUIE1pY3JvZWxlY3Ryb25pY3MgRnJlZSBGYWxsIFByb3RlY3Rpb24gSW5zdGFsbGVyDQo4LTI1LTIwMTEsIDE0OjI2OjM3OiBWZXJzaW9uOiAyLjAwLjEwLjMzLCBPUzogV2luZG93cyA3IHg2NA0KOC0yNS0yMDExLCAxNDoyNjozNzogTW9kZTogQ29tcGxldGUgMi4wMC4xMC4zMw0KOC0yNS0yMDExLCAxNDoyNjozNzogQ29udGludWluZyB3aXRoIGluc3RhbGxhdGlvbi4uLg0KOC0yNS0yMDExLCAxNDoyNjozNzogRG9uZQ0KOC0yNS0yMDExLCAxNDoyNjozNzogUmV0dXJuQ29kZTogMA0K</its:Content>
<!--Optional:-->
<its:Name>1.log</its:Name>
</tem:fileMessage>
</tem:UploadFile>
</soapenv:Body>
</soapenv:Envelope>

Note it is possible to upload a file by adding its full path to <its:Content> as shown below:

Sample request (not recommended)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:its="http://schemas.datacontract.org/2004/07/Itslearning.Integration.ContentImport.Services.Entities">
<soapenv:Header/>
<soapenv:Body>
<tem:UploadFile>
<tem:fileMessage>
<its:Content>C:\Users\someuser\Documents\bongo.jpg</its:Content>
<its:Name>bongo.jpg</its:Name>
</tem:fileMessage>
</tem:UploadFile>
</soapenv:Body>
</soapenv:Envelope>

This can fail when uploading ZIP files (e.g. IMS packages to add to courses), leaving them corrupt. Instead you should add the file to the Attachments tab in SoapUI and the correct reference in <its:Content>, as shown below:

Sample request (recommended)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:its="http://schemas.datacontract.org/2004/07/Itslearning.Integration.ContentImport.Services.Entities">
<soapenv:Header/>
<soapenv:Body>
<tem:UploadFile>
<tem:fileMessage>
<its:Content>cid:bongo.jpg</its:Content>
<its:Name>bongo.jpg</its:Name>
</tem:fileMessage>
</tem:UploadFile>
</soapenv:Body>
</soapenv:Envelope>