如何解决如何使用带有自托管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 举报,一经查实,本站将立刻删除。