4.5MultipartFile / IFormFile / IBrowserFile / FileInfo
MultipartFile 类型专为处理多部分表单文件而设计,它的构造函数是私有的,因此无法直接使用 new 关键字进行实例化,不过,框架提供了 MultipartFile.CreateFrom[Source] 的多个静态重载方法创建 MultipartFile 的实例。示例如下:
添加 MultipartFile 内容 ✨#
MultipartFile 类型专为处理多部分表单文件而设计,它的构造函数是私有的,因此无法直接使用 new 关键字进行实例化,不过,框架提供了 MultipartFile.CreateFrom[Source] 的多个静态重载方法创建 MultipartFile 的实例。示例如下:
HttpRequestBuilder.Post("https://furion.net") .SetMultipartContent(multipart => { // 从字节数组中添加文件 multipart.AddFile(MultipartFile.CreateFromByteArray(bytes, "files")); // 从 Stream 中添加文件 multipart.AddFile(MultipartFile.CreateFromStream(stream, "files")); // 从本地路径中添加文件 multipart.AddFile(MultipartFile.CreateFromPath(@"C:\Workspaces\httptest.jpg", "files")); // 从 Base64 字符串中添加文件 multipart.AddFile(MultipartFile.CreateFromBase64String("77u/5rWL6K+V5paH5Lu25YaF5a65", "files")); //从互联网 URL 中添加文件 multipart.AddFile(MultipartFile.CreateFromRemote("https://furion.net/img/furionlogo.png", "files")); });添加 IFormFile 和 IFormFileCollection 内容#
在 ASP.NET Core 中,IFormFile 接口用于处理单个文件上传,而 IFormFileCollection 接口则管理多个文件上传。这两个接口简化了文件上传功能的实现。框架提供了 AddFile(IFormFile) 和 AddFiles(IFormFileCollection) 扩展方法,便于为多部分表单内容添加文件。示例如下:
HttpRequestBuilder.Post("https://furion.net") .SetMultipartContent(multipart => { multipart.AddFile(formFile); multipart.AddFile(formFile, "file"); // 自定义表单名称 multipart.AddFile(formFile, "file", "test.txt"); // 自定义文件名 multipart.AddFile(formFile, "file", "test.txt", "text/plain"); // 自定义媒体类型 multipart.AddFiles(formFiles); multipart.AddFiles(formFiles, "files"); // 自定义表单名称 });注意:若将 IFormFile 作为模型属性的类型,例如:
public class FormClass // 支持属性 [AliasAs] 定义别名{ public int Id { get; set; } public string Name { get; set; } public IFormFile File { get; set; }}则需确保已注册 FormFileContentProcessor。可通过全局或局部调用 .AddHttpContentProcessors(() => [new FormFileContentProcessor()]) 来完成注册:
- 单次请求设置:
HttpRequestBuilder.Post("https://furion.net/") .AddHttpContentProcessors(() => [ new FormFileContentProcessor() ])- 全局配置:
在 Startup.cs 或 Program.cs 文件中,配置并注册 HttpRemote 服务,以启用 IFormFile 内容处理器功能:
services.AddHttpRemote(builder =>{ builder.AddHttpContentProcessors(() => [ new FormFileContentProcessor() ]);});添加 IBrowserFile 和 IEnumerable<IBrowserFile> 内容#
在 Blazor 中,IBrowserFile 接口用于处理单个文件上传,而 IEnumerable<IBrowserFile> 接口则管理多个文件上传。这两个接口简化了文件上传功能的实现。框架提供了 AddFile(IBrowserFile) 和 AddFiles(IEnumerable<IBrowserFile>) 扩展方法,便于为多部分表单内容添加文件。示例如下:
HttpRequestBuilder.Post("https://furion.net") .SetMultipartContent(multipart => { multipart.AddFile(browserFile); multipart.AddFile(browserFile, "file"); // 自定义表单名称 multipart.AddFile(browserFile, "file", "test.txt"); // 自定义文件名 multipart.AddFile(browserFile, "file", "test.txt", "text/plain"); // 自定义媒体类型 multipart.AddFile(browserFile, "file", "test.txt", "text/plain", maxAllowedSize: 512000); // 自定义流可以提供的最大字节数 multipart.AddFiles(browserFiles); multipart.AddFiles(browserFiles, "files"); // 自定义表单名称 multipart.AddFiles(browserFiles, "files", maxAllowedSize: 512000); // 自定义流可以提供的最大字节数 });添加 FileInfo 内容#
若需上传本地文件,通常需先创建 FileInfo 实例,再通过 OpenRead() 获取流进行上传。。框架提供了 AddFile(FileInfo) 扩展方法,便于为多部分表单内容添加文件。示例如下:
HttpRequestBuilder.Post("https://furion.net") .SetMultipartContent(multipart => { multipart.AddFile(fileInfo); multipart.AddFile(fileInfo, "file"); // 自定义表单名称 });