9 年后,在 .NET Core 3.11 及更高版本的时代,任何达到这一点的人,都可以使用以下 C# 代码实现原始发布者想要的:
namespace UploadTester
{
class Program
{
static async Task Main(string[] args)
{
var client = new HttpClient();
Stream fileStream = new FileStream("P:\\testytesty\\test1.pdf", FileMode.Open);
var FormData = new MultipartFormDataContent();
var payloadData = new Dictionary<string, string>();
payloadData.Add("AttachmentKey", "4567");
payloadData.Add("FileName", "test1.pdf");
payloadData.Add("Notes", String.Empty);
payloadData.Add("UploadedBy", "UploadPerson");
payloadData.Add("UploadDate", DateTime.UtcNow.ToShortDateString());
payloadData.Add("Compressed", "false");
payloadData.Add("DocType", "1");
foreach(var payloadItem in payloadData)
{
FormData.Add(new StringContent(payloadItem.Value), payloadItem.Key);
}
FormData.Add(new StreamContent(fileStream), "AttachmentFile", "test1.pdf");
var request = new HttpRequestMessage(HttpMethod.Post, "http://The-url-of your-post/accepter/goes-here");
request.Headers.Add("accept", "application/json");
request.Content = FormData;
var response = await client.SendAsync(request);
}
}
}
它对我来说是一个控制台模式程序,因为这是我用来测试我的 API 的,而不是每次都必须启动整个客户端应用程序。
但是从中提取核心并将其插入到类中的方法中应该很容易。
但是,我还没有弄清楚如何为正在上传的文件设置 mime 类型,但是如果您使用 web 调试器(例如 fiddler)查看此请求,您会看到它遵循 OP 想要的确切格式。