C# 将文件上载到WindowsForms C中的Rest 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");

我能够上传文件到一个API,但我需要一个小的帮助。现在我只是硬编码。但实际上,我将有一个PDF和XML文件在两个不同的本地文件存储位置,我需要从该位置获取文件,并需要将它们上传到API。有人能帮我做到这一点吗

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。有人能帮我做到这一点吗?