如何使用带有自托管Web服务的二进制文件处理多部分表单?

问题描述

我有一个自托管Web服务,用于处理来自多个客户端应用程序的API调用。我需要提供一个API,该API允许客户端应用程序上传二进制文件以及一些元数据。我知道我需要使用多部分表单来执行此操作。我很确定我知道如何调用它,但是我还没有弄清楚如何在后端处理它。

我一直在使用fiddler进行测试。这是我一直在测试的内容

Header:
Content-Type: multipart/form-data; boundary=-------------------------acebdf13572468
User-Agent: fiddler
Host: test.com:11815
Content-Length: 2553965

Request Body:
---------------------------acebdf13572468
Content-Type: application/json; charset=UTF-8

{
"ID": "a1ffa941-6848-4c68-ba2c-c1da94fe9712","FileName": "25_09302020_180000_A.mp4"
}

---------------------------acebdf13572468
Content-disposition: form-data; name="fieldNameHere"; filename="25_09302020_180000_A.mp4"
Content-Type: video/mp4

<@INCLUDE *C:\Temp\25_09302020_180000_A.mp4*@>
---------------------------acebdf13572468--

这是我的控制器代码。如果我只是发送二进制文件数据(不是作为多部分形式的一部分),则可以正常工作。我需要弄清楚如何将主体分成几部分,并将第一部分作为JSON处理以获取我的元数据,第二部分作为二进制数据并另存为文件


    Imports System.IO
    Imports System.Net
    Imports System.Net.Http
    Imports System.Web.Http
    
    Namespace Controllers
        Public Class UploadFile2Controller
            Inherits ApiController
    
            Public Async Sub Post(ByVal Message As HttpRequestMessage)
    
                Dim x As MultipartMemoryStreamProvider = Await Message.Content.ReadAsMultipartAsync()
                Dim xx As Byte() = Await x.Contents(0).ReadAsByteArrayAsync()
                File.WriteallBytes("c:\downloadfiles\{file name from Metadata in part 1}",xx)
  
            End Sub
        End Class
    End Namespace

任何建议或提示都值得赞赏。

感谢您的帮助。

约翰

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)