# 文件资源处理器

[[返回目录](README.md)]

- [文件资源处理器](#文件资源处理器)
  - [使用资源处理器](#使用资源处理器)
  - [使用资源](#使用资源)

文件资源处理器（LocalFileResource）用于加载`指定物理文件夹`中的各种资源文件。

一般不建议将太大的文件打包到程序集内，所以如果资源文件比较大（例如视频、音频等）或者资源文件是需要动态操作的（例如大量下载的图片、动态生成的文档等），那么使用`文件资源处理器`将是是一个很好的选择。

## 使用资源处理器

**注册方案**

程序集资源处理器需要在 WinFormium 启动处理方法中进行注册。在`应用程序配置代理`方法中使用`UseEmbeddedFileResource`方法来注册程序集资源处理器方案。

```C#
WinFormium.CreateRuntimeBuilder(buildApplicationConfiguration: app => {
  // ...
  app.UseLocalFileResource("http", "static.app.local", @"D:\wwwroot");
  // ...
})
.Build()
.Run();
```

使用`UseEmbeddedFileResource`方法注册资源处理器方案，需要指定以下参数：

- **scheme** `string`

  此参数指定了访问资源所需要使用的协议，一般情况下设置为常用的`http`协议即可。

- **domainName** `string`

  domainName 参数需要指定一个虚假的域名来作为资源访问的地址。需要注意的时，这里注册的域名外部是无法访问的，该域名仅在当前 NanUI 应用程序范围内可用，这里跟真实的 Web 服务是有区别的。如代码示例所示，域名`assembly.app.local`是一个不存在的假域名，指定该域名后就可以在 NanUI 的前端环境中使用该域名来加载资源。

  需要注意的是，如果您指定了一个能够正常访问的万维网域名，您在当前**应用程序作用域内**，将不能再访问到该域名指向的万维网服务器上的真实内容。简单来说，如果您指定的域名是`www.google.com`，那么在当前应用程序范围内，所有指向`www.google.com`的链接都将映射到您的当前资源处理器上，如果该链接请求的资源在您的程序集中不存在，那么将返回 404 错误。

- **localFileResourceDirectory** `string`

  此参数指定资源文件所处的文件夹。资源请求产生时，资源处理器会从指定的文件夹中查找 Url 中请求的文件并返回给请求方。

## 使用资源

创建一个测试用的 Formium 窗体，在 Web 环境中使用任何方式（Url 跳转、AJAX 异步访问等），通过指定的协议和域名都访问到指定物理文件夹内的资源文件。

文件资源处理器已默认允许了所有的跨域请求，所以您不仅能从本地访问到文件夹中的内容，也可以从 Formium 窗体加载的 Internet 网页上访问这些资源（需要考虑安全性问题）。
