You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WireMock.NET (C#)中从Form-Data请求体提取PDF文件

WireMock.NET 从Form-Data提取PDF文件实现方案

核心实现思路

WireMock.NET处理Form-Data请求时,可通过RequestMessage的MultipartFormData属性直接获取上传的文件内容,无需依赖响应模板(响应模板更适合静态或简单动态响应,处理文件提取用自定义回调逻辑更直接)。

代码示例

1. 基础提取逻辑(匹配并返回上传的PDF)

using WireMock.Server;
using WireMock.RequestBuilders;
using WireMock.ResponseBuilders;
using WireMock.Matchers;
using WireMock.Models;

var server = WireMockServer.Start();

server.Given(Request.Create()
        .WithPath("/upload-pdf")
        .UsingPost()
        .WithHeader("Content-Type", ContainsMatcher.Contain("multipart/form-data")))
    .RespondWith(Response.Create()
        .WithCallback((requestMessage) =>
        {
            // 从Form-Data中提取PDF文件(替换为实际表单字段名,示例为"pdfFile")
            var pdfFile = requestMessage.MultipartFormData.FirstOrDefault(f => f.Name == "pdfFile");
            if (pdfFile != null && pdfFile.IsFile)
            {
                // 获取PDF字节内容,此处可替换为你的业务逻辑(保存、转发等)
                byte[] pdfBytes = pdfFile.BodyData.Body;

                // 示例:直接返回提取到的PDF作为响应
                return Response.Create()
                    .WithStatusCode(200)
                    .WithHeader("Content-Type", "application/pdf")
                    .WithBody(pdfBytes)
                    .Build();
            }

            // 未找到PDF文件时的响应
            return Response.Create()
                .WithStatusCode(400)
                .WithBody("未找到上传的PDF文件")
                .Build();
        }));

2. 扩展:验证文件类型并处理

如果需要确保上传的是PDF文件,可通过Content-Type或文件名后缀判断:

var pdfFile = requestMessage.MultipartFormData.FirstOrDefault(f => 
    f.Name == "pdfFile" && 
    f.IsFile && 
    (f.ContentType == "application/pdf" || f.FileName.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase)));

关键说明

  • MultipartFormData:WireMock.NET自动解析Form-Data请求,将每个表单项封装为HttpContent对象,IsFile标记是否为文件字段。
  • BodyData.Body:获取文件的原始字节数组,可直接用于后续处理(如写入本地文件、传递给其他服务等)。
  • 表单字段名:需与前端/客户端上传时使用的字段名完全一致,根据实际场景修改示例中的"pdfFile"。

内容的提问来源于stack exchange,提问作者eetawil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:34:59