使用SSH.NET SftpClient设置扩展文件属性

时间:2018-02-08 13:49:50

标签: c# .net sftp openssh ssh.net

在使用Renci SSH.NET SFTP库从Windows上传文件到远程机器(Ubuntu 16.04 LTS)后,我尝试使用扩展文件属性来存储一些信息。但是属性没有得到保留?

这是我尝试设置扩展属性的方法

SftpFileAttributes fileAttrs = sftpClient.GetAttributes(remoteFilePath);
IDictionary<string, string> additionalAttrs = new Dictionary<string, string>();
additionalAttrs.Add(new KeyValuePair<string, string>("user.from", "abc"));
additionalAttrs.Add(new KeyValuePair<string, string>("user.to", "xyz"));
fileAttrs =
    new SftpFileAttributes(
        fileAttrs.LastAccessTime, fileAttrs.LastWriteTime, fileAttrs.Size,
        fileAttrs.UserId, fileAttrs.GroupId, 222, additionalAttrs);
sftpClient.SetAttributes(remoteFilePath, fileAttrs);

那么,你能帮助我解决这个问题吗? 请注意:出于安全原因,远程计算机配置为仅允许SFTP连接。

1 个答案:

答案 0 :(得分:1)

您无法添加user.from等随机扩展属性。您只能添加您的服务器明确支持的属性。

您没有指定使用的SFTP服务器。但是,当您连接到Ubuntu服务器时,可以假设它是最广泛的* nix SFTP服务器OpenSSH。而OpenSSH 不支持任何扩展属性。它默默地忽略了所有这些。

另见这些讨论:

SFTP规范的相关部分: