当前位置:首页 > 行业动态 > 正文

c webapi 接收byte

在C#中,Web API接收byte数组可以使用 [FromBody] 属性和 byte[] 类型参数。

在C# Web API中接收byte数组可以通过多种方式实现,以下是几种常见的方法:

1、使用FromBody属性直接接收byte数组

定义模型:首先定义一个包含byte数组的模型类,创建一个名为ByteDataModel的类,其中包含一个byte[]类型的属性data

创建API方法:在Web API控制器中创建一个方法,该方法的参数类型为前面定义的模型类,并使用[FromBody]属性进行修饰,以便从请求体中获取数据。

      [HttpPost]
      public IActionResult ReceiveByteArray([FromBody] ByteDataModel model)
      {
          // 在这里可以对接收的byte数组进行处理
          return Ok();
      }

发送请求:客户端在发送POST请求时,将byte数组作为JSON对象的一部分发送到服务器,可以使用JavaScript的fetch函数或其他HTTP客户端库来发送请求。

2、通过FormData接收byte数组

前端准备:在前端页面中,使用JavaScript创建一个FormData对象,并将文件或其他需要传输的数据添加到该对象中。

      var formData = new FormData();
      var fileInput = document.getElementById('fileInput');
      formData.append('file', fileInput.files[0]);

发送请求:使用fetch函数或其他AJAX方法将FormData对象发送到服务器。

      fetch('/api/receive', {
          method: 'POST',
          body: formData
      })
      .then(response => response.json())
      .then(data => console.log(data))
      .catch(error => console.error('Error:', error));

后端处理:在Web API控制器中创建一个方法来处理FormData中的文件,可以使用[FromForm]属性来接收FormData中的数据。

      [HttpPost]
      public async Task<IActionResult> ReceiveFile([FromForm] IFormFile file)
      {
          if (file == null || file.Length == 0)
             return Content("file not selected");
          var memoryStream = new MemoryStream();
          await file.CopyToAsync(memoryStream);
          var byteArray = memoryStream.ToArray();
          // 在这里可以对接收的byte数组进行处理
          return Ok();
      }

3、使用Base64编码接收byte数组

前端编码:在前端将byte数组转换为Base64编码的字符串,然后将其发送到服务器,可以使用JavaScript的btoa函数或其他Base64编码库来实现。

      var fileInput = document.getElementById('fileInput');
      var reader = new FileReader();
      reader.onload = function() {
          var base64String = btoa(reader.result);
          // 发送base64String到服务器
      };
      reader.readAsBinaryString(fileInput.files[0]);

后端解码:在Web API控制器中创建一个方法来接收Base64编码的字符串,并将其解码为byte数组,可以使用C#的Convert.FromBase64String方法来实现。

      [HttpPost]
      public IActionResult ReceiveBase64([FromBody] string base64String)
      {
          var byteArray = Convert.FromBase64String(base64String);
          // 在这里可以对接收的byte数组进行处理
          return Ok();
      }

C# Web API接收byte数组可以通过多种方式实现,开发者可以根据实际需求选择合适的方法,无论采用哪种方式,都需要确保数据的完整性和安全性,避免数据丢失或泄露。

0