HttpMultipartParser 8.4.0
.NET 6.0 此包针对 .NET 6.0,支持此框架或更高版本。 .NET Standard 2.1 此包针对 .NET Standard 2.1,支持此框架或更高版本。 .NET Framework 4.8 此包针对 .NET Framework 4.8,支持此框架或更高版本。
dotnet add package HttpMultipartParser --version 8.4.0
NuGet\Install-Package HttpMultipartParser -Version 8.4.0
此命令旨在在Visual Studio的包管理器控制台中使用,因为它使用NuGet模块版本的Install-Package。
<PackageReference Include="HttpMultipartParser" Version="8.4.0" />
对于支持PackageReference的项目,请将此XML节点复制到项目文件中以引用包。
paket add HttpMultipartParser --version 8.4.0
NuGet团队不提供对此客户端的支持。请联系其维护者以寻求支持。
#r "nuget: HttpMultipartParser, 8.4.0"
#r指令可以在F# Interactive和Polyglot Notebooks中使用。将此内容复制到交互式工具或脚本的源代码中以引用包。
// Install HttpMultipartParser as a Cake Addin #addin nuget:?package=HttpMultipartParser&version=8.4.0 // Install HttpMultipartParser as a Cake Tool #tool nuget:?package=HttpMultipartParser&version=8.4.0
NuGet团队不提供对此客户端的支持。请联系其维护者以寻求支持。
Http多部分解析器
发布说明 | NuGet(稳定版) | MyGet(预发布版) |
---|---|---|
关于
Http多部分解析器准确地实现了其应实现的功能:解析multipart/form-data。此解析器非常适合解析来自流的大数据,因为它不会一次性读取整个流,而是产生一系列用于文件数据的流。
安装
将HttpMultipartParser包含到您的项目的最简单方法是将其nuget包添加到您的项目中
PM> Install-Package HttpMultipartParser
.NET框架支持
- 此解析器是为.NET 4.8、.NET标准2.1、.NET 5.0和.NET 6.0构建和测试的。
- 版本5.1.0是最后一个支持.NET 4.6.1、NET 4.7.2和.NET标准2.0的版本。
- 版本 2.2.4 是最后一个支持旧 .NET 平台(例如 .NET 4.5 和 .NET 标准版 1.3)的版本。
用法
非流式处理(简单,不适合用于非常大的文件)
- 通过调用
MultipartFormDataParser.Parse
解析包含multipart/form-data 的流(或它的异步版本MultipartFormDataParser.ParseAsync
)。 - 通过解析器访问数据。
流式处理(处理大文件)
- 使用包含multipart/form-data 的流创建一个新的 StreamingMultipartFormDataParser
- 设置 ParameterHandler 和 FileHandler 委托
- 调用
parser.Run()
(或它的异步版本parser.RunAsync()
) - 数据流进入时将调用委托。
示例
单个文件
// stream:
-----------------------------41952539122868
Content-Disposition: form-data; name="username"
example
-----------------------------41952539122868
Content-Disposition: form-data; name="email"
[email protected]
-----------------------------41952539122868
Content-Disposition: form-data; name="files[]"; filename="photo1.jpg"
Content-Type: image/jpeg
ExampleBinaryData012031203
-----------------------------41952539122868--
// ===== Simple Parsing ====
// You can parse synchronously:
var parser = MultipartFormDataParser.Parse(stream);
// Or you can parse asynchronously:
var parser = await MultipartFormDataParser.ParseAsync(stream).ConfigureAwait(false);
// From this point the data is parsed, we can retrieve the
// form data using the GetParameterValue method.
var username = parser.GetParameterValue("username");
var email = parser.GetParameterValue("email");
// Files are stored in a list:
var file = parser.Files.First();
string filename = file.FileName;
Stream data = file.Data;
// ==== Advanced Parsing ====
var parser = new StreamingMultipartFormDataParser(stream);
parser.ParameterHandler += parameter => DoSomethingWithParameter(parameter);
parser.FileHandler += (name, fileName, type, disposition, buffer, bytes, partNumber, additionalProperties) =>
{
// Write the part of the file we've received to a file stream. (Or do something else)
filestream.Write(buffer, 0, bytes);
}
// You can parse synchronously:
parser.Run();
// Or you can parse asynchronously:
await parser.RunAsync().ConfigureAwait(false);
多个参数
// stream:
-----------------------------41952539122868
Content-Disposition: form-data; name="checkbox"
likes_cake
-----------------------------41952539122868
Content-Disposition: form-data; name="checkbox"
likes_cookies
-----------------------------41952539122868--
// ===== Simple Parsing ====
// You can parse synchronously:
var parser = MultipartFormDataParser.Parse(stream);
// Or you can parse asynchronously:
var parser = await MultipartFormDataParser.ParseAsync(stream).ConfigureAwait(false);
// From this point the data is parsed, we can retrieve the
// form data from the GetParameterValues method
var checkboxResponses = parser.GetParameterValues("checkbox");
foreach(var parameter in checkboxResponses)
{
Console.WriteLine("Parameter {0} is {1}", parameter.Name, parameter.Data)
}
多个文件
// stream:
-----------------------------41111539122868
Content-Disposition: form-data; name="files[]"; filename="photo1.jpg"
Content-Type: image/jpeg
MoreBinaryData
-----------------------------41111539122868
Content-Disposition: form-data; name="files[]"; filename="photo2.jpg"
Content-Type: image/jpeg
ImagineLotsOfBinaryData
-----------------------------41111539122868--
// ===== Simple Parsing ====
// You can parse synchronously:
var parser = MultipartFormDataParser.Parse(stream);
// Or you can parse asynchronously:
var parser = await MultipartFormDataParser.ParseAsync(stream).ConfigureAwait(false);
// Loop through all the files
foreach(var file in parser.Files)
{
Stream data = file.Data;
// Do stuff with the data.
}
// ==== Advanced Parsing ====
var parser = new StreamingMultipartFormDataParser(stream);
parser.ParameterHandler += parameter => DoSomethingWithParameter(parameter);
parser.FileHandler += (name, fileName, type, disposition, buffer, bytes, partNumber, additionalProperties) =>
{
// Write the part of the file we've received to a file stream. (Or do something else)
// Assume that filesreamsByName is a Dictionary<string, FileStream> of all the files
// we are writing.
filestreamsByName[name].Write(buffer, 0, bytes);
};
parser.StreamClosedHandler += ()
{
// Do things when my input stream is closed
};
// You can parse synchronously:
parser.Run();
// Or you can parse asynchronously:
await parser.RunAsync().ConfigureAwait(false);
许可协议
此项目遵循 MIT 许可协议。
产品 | 版本 兼容的和其他计算的面向框架版本。 |
---|---|
.NET | net5.0 已计算。 net5.0-windows 已计算。 net6.0 兼容。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 兼容。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET Core | netcoreapp3.0 已计算。 netcoreapp3.1 已计算。 |
.NET Standard | netstandard2.1 兼容。 |
.NET Framework | net48 兼容。 net481 已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NETFramework 4.8
- Microsoft.IO.RecyclableMemoryStream (>= 3.0.0)
- System.Buffers (>= 4.5.1)
-
.NETStandard 2.1
- Microsoft.CSharp (>= 4.7.0)
- Microsoft.IO.RecyclableMemoryStream (>= 3.0.0)
- System.Buffers (>= 4.5.1)
-
net6.0
- Microsoft.IO.RecyclableMemoryStream (>= 3.0.0)
- System.Buffers (>= 4.5.1)
-
net7.0
- Microsoft.IO.RecyclableMemoryStream (>= 3.0.0)
- System.Buffers (>= 4.5.1)
NuGet 包 (30)
显示依赖于 HttpMultipartParser 的前 5 个 NuGet 包
包 | 下载 |
---|---|
StrongGrid
StrongGrid 是用于 SendGrid v3 API 的强类型 .NET 客户端。 |
|
ZoomNet
ZoomNet 是用于 Zoom API 的强类型 .NET 客户端。 |
|
Pangea.SDK
.NET SDK 用于在 pangea.cloud 上访问 Pangea API 服务。 |
|
IctBaden.Stonehenge3
X-Platform Web 应用程序框架 |
|
Butterfly.Web
简单 RESTlike 和订阅 API 服务器,使用 C# 实现。 |
GitHub 代码仓库 (9)
显示依赖于 HttpMultipartParser 的前 5 个最受欢迎的 GitHub 代码仓库
代码仓库 | 星星 |
---|---|
sendgrid/sendgrid-csharp
The Official Twilio SendGrid C#, .NetStandard, .NetCore API Library
|
|
uholeschak/ediabaslib
.NET BMW 和 VAG Ediabas 解释器库
|
|
bassmaster187/TeslaLogger
TeslaLogger 是为您的 Tesla Model S/3/X/Y 自托管的日志记录器。实际上它支持 RaspberryPi 3B, 3B+, 4B, Docker 和 Synology NAS。
|
|
DataDog/dd-trace-dotnet
.NET Client Library for Datadog APM
|
|
ThomasBleijendaal/RapidCMS
RapidCMS 是一个 Blazor 框架,允许您从纯代码构建响应式且灵活的 CMS。它提供了一个基本的编辑器和控件集,并且是完全可定制的。
|
版本 | 下载 | 最后更新 |
---|---|---|
8.4.0 | 212,320 | 4/8/2024 |
8.3.0 | 276,746 | 1/10/2024 |
8.2.0 | 390,018 | 6/22/2023 |
8.1.0 | 418,129 | 2/5/2023 |
8.0.0 | 215,625 | 1/8/2023 |
7.1.0 | 285,871 | 10/30/2022 |
7.0.0 | 255,806 | 7/7/2022 |
6.0.1 | 68,558 | 5/31/2022 |
5.1.0 | 515,092 | 3/5/2022 |
5.0.1 | 2,369,239 | 7/11/2021 |
5.0.0 | 1,613,759 | 1/3/2021 |
4.4.0 | 75,851 | 12/4/2020 |
4.3.1 | 561,134 | 5/1/2020 |
4.3.0 | 1,656 | 5/1/2020 |
4.2.0 | 64,378 | 3/30/2020 |
4.1.0 | 3,268 | 3/22/2020 |
4.0.0 | 95,678 | 3/11/2020 |
3.1.0 | 181,646 | 12/15/2019 |
3.0.0 | 125,756 | 11/25/2019 |
2.2.4 | 1,228,377 | 6/16/2017 |
2.2.3 | 57,151 | 1/11/2017 |
2.2.2 | 2,441 | 1/10/2017 |
2.2.1 | 329,308 | 12/7/2016 |
2.2.0 | 56,563 | 12/5/2016 |
2.1.7 | 26,679 | 10/30/2016 |
2.1.6 | 29,639 | 9/23/2016 |
2.1.5 | 2,451 | 9/23/2016 |
2.1.4 | 43,162 | 4/18/2016 |
2.1.3 | 6,341 | 2/13/2016 |
2.1.2 | 2,470 | 2/13/2016 |
2.1.1 | 7,841 | 1/3/2016 |
2.0.1 | 8,280 | 10/18/2015 |
2.0.0 | 7,820 | 8/23/2015 |
1.1.5 | 5,243 | 7/7/2015 |
1.1.4 | 20,206 | 2/13/2015 |
1.1.3 | 6,779 | 2/13/2015 |
1.1.2 | 2,537 | 2/6/2015 |
1.1.0 | 2,460 | 2/6/2015 |
1.0.3 | 2,448 | 2/6/2015 |
1.0.2 | 4,796 | 11/25/2014 |