将MultiPartFileData文件发布到函数

时间:2019-01-24 12:58:44

标签: c# file-upload dotnet-httpclient

我有数据从来源发送到我的Api,我需要将其发布到另一个POST ActionResult。

我基本上在第一个功能中接收数据没有问题;

var provider = new MultipartFormDataStreamProvider(root);
try
{
    //irrelevant confirmations and other code pieces are left out
    await Request.Content.ReadAsMultipartAsync(provider);
    foreach (MultipartFileData fileData in provider.FileData)
    {
        var appPath = System.AppDomain.CurrentDomain.BaseDirectory.ToString();
        var basePath = Path.GetFullPath(Path.Combine(appPath, @"..\"));
        var headerActivityPath = basePath + "\\Documents\\" + tenantString + "\\Activity\\" + activityId;
        File.Copy(fileData.LocalFileName, Path.Combine(activityPath, fileName));
    }
}

完成此文件的接收后,我需要进行POST。我想在不先将其保存到磁盘的情况下进行操作,所以我不知道应该在哪里使用POST发出HttpClient请求。

将要接收数据的ActionResult的参数为HttpPostedFileBase,但我不知道要发送什么。

我以前使用的每种方法都使用磁盘上的文件,是否可以在不先将文件保存到磁盘的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

HttpPostedFileBase上有一个名为InputStream的属性,它使您可以访问上载到端点的附件的内容。您可以将其用作HttpClient中新StreamContent的参数。

foreach (MultipartFileData fileData in provider.FileData)
    {
        await client.PostAsync("http://someurl.com", new StreamContent(fileData.InputStream));
    }