Creates one or more files in either "My web files" or "My private files" area of eportfolio.
Input parameters:
Name | Description | Type | M/O |
Message Type | Type of the message | Set to "MyFiles.CreateFile" | M |
SyncKeys | One or more external SyncKeys for the created file(s). | Text | O |
SiteId | Site where action will be executed | Int | O |
VendorId | VendorId which will be associated with created content | Text | O |
UserID | UserID of the owner. | Integer | O/M |
UserSyncKey | User SyncKeyID of the owner. | Text | O/M |
Visibility | If the file is to be added to either: "Public" -> "My web files". "Private" -> "My public files". | Text "Private" or "Public" | M |
ParentSyncKey | SyncKey of the folder into which the file is to be added. Default is the root. | Text | O |
File | Name of the file(s). | Text. Must not be blank. Follow same rules as the UI. Can’t contain invalid characters | M |
Notes:
Either UserID or UserSyncKey must be specified. This means specify at least one is mandatory.
Output
Finished status
If the folder was created successfully, output message contains its path, that can be used to construct URL for accessing the folder from web browser.
- For private folders: returns relative physical path to new folder, for example "\myfiles\newfile".
- For public folders: returns relative URL address to new folder, for example "/data/1/1/myfiles/newfile".
Warning status
- Unable to find some files in the user's site.
- File doesn't exist.
- Supplied SyncRefId not found.
Errors status
- Unable to find any files in the user's site.
- Invalid format / parameters (different to specified schema).
- User with specified UserId/UserSyncKey is not valid.
- User with specified UserId/UserSyncKey is deleted.
- User with specified UserId/UserSyncKey is external.
- Folder related to ParentSyncKey has been deleted or removed.
- ParentSyncKey cannot be found in the identifier map or is invalid.
- Unable to find file matching the supplied GUID.
- Message contains duplicates for syncKeys: {0}. Make sure your syncKeys are globally unique.
- File name is blank or contains invalid characters.
- File size exceeds the user's quota.
Sample database content
This section describes example output after successfully creating a new folder.
Conditions
Folder hierarchy: parent_folder > new_file
Private files physical folder for a given user: C:\itsl\dataprivate\1\1
Web files virtual folder for a given user: /data/1/1/
Web files homepage link: https://localhost/data/1/1
Storage
This is how it's being stored in the database:
MessageIdentifierMap | |||
---|---|---|---|
Folder visibility | EntityIdentifier | Type | Description |
Private | \parent_folder\new_file | PrivateFolder | EntityIdentifier contains physical path suitable to use with PersonalFileHandler class. In code we handle physical paths, so its easier to store it this way. Pair EntityIdentifier and Type is an unique identifier. |
Web | PublicFolder |
MessageLogEntry | ||||
---|---|---|---|---|
Folder visibility | EntityIdentifier | Description | Text | Description |
Private | \parent_folder\new_file | Physical path suitable to use with PersonalFileHandler class. In code we handle physical paths, so its easier to store it this way. | \parent_folder\new_file | Physical path used to construct URL to a file in the user's private folder. Sample URL used to navigate to the private folder: https://localhost/FileExplorer/BrowseFiles.aspx?Path=\parent_folder\new_file |
Web | /data/1/1/parent_folder/new_file | Relative URL used to construct full URL to a file in the user's public folder. Sample URL used to navigate to the public folder: https://localhost/data/1/1/parent_folder/new_file |
MessageIndexEntry | |||
---|---|---|---|
Folder's SyncKey specified in the message | Type | Value | Description |
Existing SyncKey | No changes | No changes to existing row | |
Not specified - null value | SyncKey | e9f3bc22-d307-48a0-8b4e-0934180df3a4 | A row with autogenerated key is being inserted to the table |
XML
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
xs
:schema
xmlns:xs
=
"http://www.w3.org/2001/XMLSchema"
xmlns
=
"urn:message-schema"
elementFormDefault
=
"qualified"
targetNamespace
=
"urn:message-schema"
>
<
xs
:element
name
=
"Message"
type
=
"MessageType"
/>
<
xs
:complexType
name
=
"MessageType"
>
<
xs
:sequence>
<
xs
:element
name
=
"SyncKeys"
minOccurs
=
"0"
maxOccurs
=
"1"
>
<
xs
:complexType>
<
xs
:sequence>
<
xs
:element
name
=
"SyncKey"
minOccurs
=
"0"
maxOccurs
=
"unbounded"
>
<
xs
:complexType>
<
xs
:simpleContent>
<
xs
:extension
base
=
"xs:string"
>
<
xs
:attribute
name
=
"ID"
type
=
"xs:ID"
use
=
"required"
/>
</
xs
:extension>
</
xs
:simpleContent>
</
xs
:complexType>
</
xs
:element>
</
xs
:sequence>
</
xs
:complexType>
</
xs
:element>
<
xs
:element
name
=
"SiteId"
minOccurs
=
"0"
maxOccurs
=
"1"
type
=
"xs:int"
/>
<
xs
:element
name
=
"VendorId"
minOccurs
=
"0"
maxOccurs
=
"1"
>
<
xs
:simpleType>
<
xs
:restriction
base
=
"xs:string"
>
<
xs
:minLength
value
=
"1"
/>
<
xs
:maxLength
value
=
"36"
/>
</
xs
:restriction>
</
xs
:simpleType>
</
xs
:element>
<
xs
:element
name
=
"CreateMyFilesFile"
minOccurs
=
"1"
maxOccurs
=
"1"
>
<
xs
:complexType>
<
xs
:sequence>
<
xs
:choice
minOccurs
=
"1"
maxOccurs
=
"1"
>
<
xs
:element
name
=
"UserId"
type
=
"xs:integer"
/>
<
xs
:element
name
=
"UserSyncKey"
type
=
"xs:string"
/>
</
xs
:choice>
<
xs
:element
name
=
"Visibility"
minOccurs
=
"1"
maxOccurs
=
"1"
type
=
"xs:string"
/>
</
xs
:sequence>
</
xs
:complexType>
</
xs
:element>
<
xs
:element
name
=
"Files"
minOccurs
=
"1"
maxOccurs
=
"1"
>
<
xs
:complexType>
<
xs
:sequence>
<
xs
:element
name
=
"File"
minOccurs
=
"1"
maxOccurs
=
"unbounded"
>
<
xs
:complexType>
<
xs
:simpleContent>
<
xs
:extension
base
=
"xs:string"
>
<
xs
:attribute
name
=
"ParentSyncKey"
type
=
"xs:string"
use
=
"optional"
/>
<
xs
:attribute
name
=
"SyncKeyRef"
type
=
"xs:IDREF"
use
=
"optional"
/>
</
xs
:extension>
</
xs
:simpleContent>
</
xs
:complexType>
</
xs
:element>
</
xs
:sequence>
</
xs
:complexType>
</
xs
:element>
</
xs
:sequence>
</
xs
:complexType>
</
xs
:schema>
<
Message
xmlns
=
"urn:message-schema"
>
<
SyncKeys
>
<
SyncKey
ID
=
"ID1"
>123</
SyncKey
>
<
SyncKey
ID
=
"ID2"
>456</
SyncKey
>
</
SyncKeys
>
<
CreateMyFilesFile
>
<
UserSyncKey
>123456</
UserSyncKey
>
<
Visibility
>Public</
Visibility
>
</
CreateMyFilesFile
>
<
Files
>
<
File
ParentSyncKey
=
"789"
SyncKeyRef
=
"ID1"
>312a10a2-a79c-4d9e-ba11-697b85eea65f</
File
>
<
File
ParentSyncKey
=
"789"
SyncKeyRef
=
"ID2"
>505d5e1c-62c5-4491-aeef-81c351f7dd2e</
File
>
</
Files
>
</
Message
>