Back to product page

SetAttributes method


Sets attributes for a file or folder.

Type

None

Syntax

  • Basic
object.SetAttributes[RemotePath], [Size], [Uid], [Gid], [Permissions], [AccessTime], [ModificationTime]
The SetAttributes(object,RemotePath,Size,Uid,Gid,Permissions,AccessTime,ModificationTime) syntax has these parts:
objectAn expression evaluating to an object of type wodFtpDLX.
RemotePathOptional. A Variant value. Full path to a file/directory on the server.
SizeOptional. A Variant value. New file/directory size.
UidOptional. A Variant value. Sets user ownership for the file/directory.
GidOptional. A Variant value. Sets group ownership for the file/directory.
PermissionsOptional. A Variant value. Sets file/directory permissions.
AccessTimeOptional. A Variant value. Sets last access time.
ModificationTimeOptional. A Variant value. Sets last modification time.

Remarks

The SetAttributes method is used to set certain attributes for the file or directory on the server. Although all parameters are optional you should set at least one parameter for this method to actually send a request to the server. If RemotePath is not set, then the RemotePath property will be used as the file/directory name whose attributes are set.

IMPORTANT : if you set the file UID, also set GID in same function call (and vice versa). This is the way setting attributes works. The same applies when setting AccessTime and ModificationTime. If you omit one of these parameters while setting the other, it will be set to 0 (representing Jan 1, 1970).

If you want to set only one of these parameters, you should first retrieve the attributes of the file/directory and use these retrieved values in this method.

The value for Permissions is defined by the POSIX standard, usualy represented in octal (base 8) to make parsing them easier. Permissions AND 777 (octal) will give you read/write/execute permissions for owner, group and others. To be more precise, 1 indicates execute permission, 2 indicates write permission, 4 indicates read permission. For example, if file Permission AND 777 (octal) gives 754, this is represented on the server as -rwxr-xr-- which means: the owner can read/write/execute, the group can read/execute, and others can only read.

To determine if an attribute belongs to directory, test for Permissions AND 40000 (octal). To determine if an attribute belongs to a symbolic link, test for Permissions AND 120000 (octal).

However, when you supply Permission value you must provide it in DECIMAL! That means that 777 oct will be 511 dec, and you must set 511 as Permission, to become 777 on remote side. Same rule applies for all protocols!

WARNING: in protocols other than SFTP this method will allow only limited subset of available attributes to be set. Since there is no common way to set all of them, you can set only one set of attributes at a time (either Size, UID+GID, Permissions, ATIME+MTIME). If you try to set more than one using one SetAttributes call, component will return an error. Currently you can only set Permissions (with SITE CHMOD command) and ModificationTime (through MFMT/MDTM commands). Other values will be ignored. FollowSymLink is ignored in those protocols. We are open for any ideas to extend these protocols so they support full subset - as in SFTP protocol.

Platforms

Windows