【问题标题】:How to send byte array in c# ApiController如何在 c# ApiController 中发送字节数组
【发布时间】:2019-04-29 02:24:32
【问题描述】:

谁能告诉我如何测试这个功能:

[RoutePrefix("service")]
public class TestControler : ApiController
{
    [Route("function-route")]
    [HttpPost]
    public HttpResponseMessage Testfunction(TestData t_testData )
    {
        ...
        HttpResponseMessage httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK);
        return httpResponseMessage;
    }
}

public class TestData
{
    public byte[] PreviewImage { get; set; }
    public byte[] FileAsByteArray { get; set; }
}

我们通过以下方式启用了 Swagger:

public void Configuration(IAppBuilder appBuilder)
{
    // Configure Web API for self-host. 
    HttpConfiguration config = new HttpConfiguration();

    //Using AttributeRoutes
    config.MapHttpAttributeRoutes();

    //Swagger
    config.EnableSwagger(c =>{
        c.SingleApiVersion("v1", "My Test API");
    }).EnableSwaggerUi();

    appBuilder.UseWebApi(config);
}

我真的不知道如何通过 swagger、postman 或 curl 来测试这个 API。问题是字节[],如何发送? 有人如何测试这些 API 吗?

或者,如果有另一种方法可以发送任何文件(pdf、txt、docx、...)与任何图片(jpg、png、...)结合,而无需 byte[],我会很高兴听到。

【问题讨论】:

  • 你可以试试 HttpPostedFileBase 而不是 byte[]

标签: c# curl swagger postman asp.net-apicontroller


【解决方案1】:

我将对字节数组进行 base64 编码,并将您的模型属性从 byte[] 更改为 string。这应该允许您将这些字符串发布到您的控制器,在那里您可以将它们转换回字节数组。

要编码为 base64 字符串,请使用 string byteString = Convert.ToBase64String(byteArray) 并使用 byte[] byteArray = Convert.FromBase64String(byteString) 转换回来。

您更新后的代码可能类似于:

public class TestData
{
    public string PreviewImage { get; set; }
    public string FileAsByteArray { get; set; }
}

[Route("function-route")]
[HttpPost]
public HttpResponseMessage Testfunction(TestData t_testData)
{
    // convert base64 string to byte[]
    byte[] preview = Convert.FromBase64String(t_testData.PreviewImage);
    byte[] file = Convert.FromBase64String(t_testData.FileAsByteArray);
    ...
    HttpResponseMessage httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK);
    return httpResponseMessage;
}

要使用 postman 进行测试,您可以使用 javascript 函数 atob()btoa() 将字节数组转换为 base 64 编码字符串,反之亦然。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2020-02-28
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    相关资源
    最近更新 更多