C# 将文件上载到WindowsForms C中的Rest API#
我能够上传文件到一个API,但我需要一个小的帮助。现在我只是硬编码。但实际上,我将有一个PDF和XML文件在两个不同的本地文件存储位置,我需要从该位置获取文件,并需要将它们上传到API。有人能帮我做到这一点吗C# 将文件上载到WindowsForms C中的Rest API#,c#,winforms,post,C#,Winforms,Post,我能够上传文件到一个API,但我需要一个小的帮助。现在我只是硬编码。但实际上,我将有一个PDF和XML文件在两个不同的本地文件存储位置,我需要从该位置获取文件,并需要将它们上传到API。有人能帮我做到这一点吗 private void btnsubmit_Click(object sender, EventArgs e) { UploadFileAsync(@"D:\test\SBP-1102.pdf");
private void btnsubmit_Click(object sender, EventArgs e)
{
UploadFileAsync(@"D:\test\SBP-1102.pdf");
}
public static async Task UploadFileAsync(string path)
{
HttpClient client = new HttpClient();
// we need to send a request with multipart/form-data
var multiForm = new MultipartFormDataContent();
// add file and directly upload it
FileStream fs = File.OpenRead(path);
multiForm.Add(new StreamContent(fs), "files", Path.GetFileName(path));
// send request to API
var url = "https://spaysaas-dev/api/getOCRDocuments";
var response = await client.PostAsync(url, multiForm);
if(response.IsSuccessStatusCode)
{
MessageBox.Show("Success");
}
else
{
MessageBox.Show(response.ToString());
}
}
这个答案是不完整的,因为它实际上没有解释为什么文件没有上传,但它可能会帮助您诊断问题 有关的文件说: 使用从线程池自动分配的线程资源异步发送文件。要在文件上载完成时接收通知,请向UploadFileCompleted事件添加事件处理程序 因此,您可以尝试处理并检查
UploadFileCompletedEventArgs
中的错误
private void上传(字符串文件名)
{
var client=new WebClient();
client.UploadFileCompleted+=客户端_UploadFileCompleted;
尝试
{
var uri=新的uri(“https://saas-dev/api/getDocs");
{
client.Headers.Add(“fileName”,System.IO.Path.GetFileName(fileName));
UploadFileAsync(uri,文件名);
}
}
捕获(例外情况除外)
{
MessageBox.Show(例如Message);
}
}
私有无效客户端\u UploadFileCompleted(对象发送方,UploadFileCompletedEventArgs e)
{
//检查e.Error是否存在错误
}
我可以使用多部分表单数据将PDF文件上载到API中是否有例外?你能在浏览器中打开URI吗?您的网络中有代理吗?这个问题可能有很多原因。您可以尝试检查发生了什么。我不确定我的代码是否正确。运行codeTry处理时,我没有收到任何错误。UploadFileCompletedEventArgs类有一个Error
属性,它可以帮助我们了解是否发生了错误?@VenkatSunil我给出了一个答案,说明了如何以及在何处处理该事件。我尝试了从堆栈溢出到将pdf文件上载到web api的几个示例。但什么都帮不了我。有没有人能帮我用一个示例程序将PDF文件上传到windows forms C中的Web API?任何示例都可能与您已有的类似。您是否尝试了上面的代码以查看是否有错误,如果有,错误是什么?API是否需要身份验证,因为看起来您没有设置任何类型的身份验证头?您是否拥有Rest API以便对该端进行故障排除,或者它是第三方API?您好,我已经更改了代码,现在可以以多部分表单数据的形式上载文件。但实际上,我将在两个不同的文件位置拥有PDF和XML文件,需要从文件系统获取这些文件,然后我需要将它们上传到API。有人能帮我做到这一点吗?