无法使用 Sharpssh 重命名远程文件

发布于 2024-12-04 22:36:41 字数 1106 浏览 1 评论 0原文

我写了如下代码。 但此代码不可用...

当我执行时,会发生。 如果有人知道什么,请给我建议... 提前致谢。


void sftp_OnTransferEnd(string src, string dst, int transferredBytes
                          , int totalBytes, string message)
{

    if (sftp == null)
{
sftp = new Sftp(Const.SFTP_HOST, Const.SFTP_USER, Const.SFTP_PASSWORD);

sftp.Connect();

}

SftpChannel.rename("file/123_Uploading.zip", "file/123_Finished.zip");
}


--------------------------------------------
Sftp.cs

public void Rename(string oldPath, string newPath)
{

   SftpChannel.rename(oldPath, newPath);

}

---------------------------------------------

错误发生在以下地方...

---------------------------------------------------------
ChannelSftp.cs

public void rename(String oldpath, String newpath)
{

・

・

・


int i=buf.getInt(); << i == 4

if(i==SSH_FX_OK) return;

throwStatusError(buf, i); << throw error

catch(Exception e)

{

if(e is SftpException) throw (SftpException)e; << thrown error (id >> 4, message >> Failure)

throw new SftpException(SSH_FX_FAILURE, "");

}

}

i wrote like the following code.
but this code is not available...

when i execute, occur.
if anyone knows something, give me advice pls...
thanks in advance.


void sftp_OnTransferEnd(string src, string dst, int transferredBytes
                          , int totalBytes, string message)
{

    if (sftp == null)
{
sftp = new Sftp(Const.SFTP_HOST, Const.SFTP_USER, Const.SFTP_PASSWORD);

sftp.Connect();

}

SftpChannel.rename("file/123_Uploading.zip", "file/123_Finished.zip");
}


--------------------------------------------
Sftp.cs

public void Rename(string oldPath, string newPath)
{

   SftpChannel.rename(oldPath, newPath);

}

---------------------------------------------

Error occur the following place...

---------------------------------------------------------
ChannelSftp.cs

public void rename(String oldpath, String newpath)
{

・

・

・


int i=buf.getInt(); << i == 4

if(i==SSH_FX_OK) return;

throwStatusError(buf, i); << throw error

catch(Exception e)

{

if(e is SftpException) throw (SftpException)e; << thrown error (id >> 4, message >> Failure)

throw new SftpException(SSH_FX_FAILURE, "");

}

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

时间海 2024-12-11 22:36:41

当前的 NuGet 包仍然是 1.1.1.13 版本,不包含 Rename 方法。如果软件包维护者可以更新它,那就太好了。

但与此同时,如果其他人需要使用当前的 NuGet 包,这里有一个基于反射的扩展方法解决方案。不太好,但至少我可以使用该包而无需分叉/重建等。

public static void Rename(this Sftp client, string oldName, string newName) {
  var channelProperty = client.GetType().GetProperty("SftpChannel", BindingFlags.NonPublic | BindingFlags.Instance);
  channelProperty.GetValue(_client, null).CastTo<ChannelSftp>().rename(OldName, newName);
}

The current NuGet package is still of version 1.1.1.13 which does not contain the Rename method. It would be great if the package maintainer could update it.

But in the meantime if anyone else needs it with the current NuGet package, here is a Reflection-based extension method solution. Not nice, but at least I can use the package without forking/rebuilding, etc.

public static void Rename(this Sftp client, string oldName, string newName) {
  var channelProperty = client.GetType().GetProperty("SftpChannel", BindingFlags.NonPublic | BindingFlags.Instance);
  channelProperty.GetValue(_client, null).CastTo<ChannelSftp>().rename(OldName, newName);
}
夜雨飘雪 2024-12-11 22:36:41

我将您的

public void Rename(string oldPath, string newPath)
{

   SftpChannel.rename(oldPath, newPath);

}

代码添加到 Sftp.cs 类中并调用它:

  var sftp = new Sftp("sftp.example.com", username, password);
  sftp.Connect(22);
  sftp.Rename(oldValue, newValue);
  sftp.Close();

然后它成功重命名了我的文件。顺便说一句谢谢

I added your

public void Rename(string oldPath, string newPath)
{

   SftpChannel.rename(oldPath, newPath);

}

code into Sftp.cs class and I called it :

  var sftp = new Sftp("sftp.example.com", username, password);
  sftp.Connect(22);
  sftp.Rename(oldValue, newValue);
  sftp.Close();

then it renamed my file successfully.Thanks by the way

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文