代码拉取完成,页面将自动刷新
---
id: dmtpremoteaccess
title: 远程文件系统
---
import Tag from "@site/src/components/Tag.js";
## 一、说明 <Tag>Pro</Tag>
使用该插件,可以访问远程终端的文件系统。包括:创建、删除、复制、移动、获取信息等。
## 二、使用
该功能由`RemoteAccessFeature`功能插件提供。所以需要`客户端`和`服务器`都需要`UseRemoteAccess`。
```csharp showLineNumbers
.ConfigurePlugins(a =>
{
a.UseRemoteAccess();
});
```
以获取文件夹信息为例:
【请求端】
任意Dmtp终端均可以调用GetRemoteAccessActor创建一个访问器。
同时可以传递一个元数据组。用于载入自定义消息。
```csharp showLineNumbers
var result = await this.m_client.GetRemoteAccessActor().GetDirectoryInfoAsync("c:/新建文件夹", millisecondsTimeout: 30 * 1000);
//然后通过DirectoryInfo属性,可以获取到请求文件夹的信息,包括创建时间、修改时间、子文件夹、子文件等。
```
:::tip 提示
此处可以访问远程终端的文件系统。包括:创建、删除、复制、移动、获取信息等
:::
【响应端】
响应端定义一个插件,实现`IDmtpRemoteAccessingPlugin`,然后实现接口。
```csharp showLineNumbers
public class MyRemoteAccessPlugin : PluginBase, IDmtpRemoteAccessingPlugin
{
public async Task OnRemoteAccessing(IDmtpActorObject client, RemoteAccessingEventArgs e)
{
//Console.WriteLine($"有客户端正在请求远程操作");
//Console.WriteLine($"类型:{e.AccessType},模式:{e.AccessMode}");
//Console.WriteLine($"请求路径:{e.Path}");
//Console.WriteLine($"目标路径:{e.TargetPath}");
//Console.WriteLine("请输入y/n决定是否允许其操作?");
//var input = Console.ReadLine();
//if (input == "y")
//{
// e.IsPermitOperation = true;
// return;
//}
//如果当前插件无法处理,转至下一个插件
await e.InvokeNext();
}
}
```
:::caution 警告
远程文件系统访问,是属于比较隐私的功能,所以在开发这功能时,应该取得被访问端的访问许可,所以在每次访问时,都必须对`e.IsPermitOperation = true`做确认动作。
:::
[本文示例Demo](https://gitee.com/RRQM_Home/TouchSocket/tree/master/examples/Dmtp/RemoteAccessApp)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。