Отправка файла MultiPartFileData в функцию - PullRequest
0 голосов
/ 24 января 2019

У меня есть данные, поступающие из источника в мой 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 голосов
/ 24 января 2019

HttpPostedFileBase имеет свойство, называемое InputStream, которое даст вам доступ к содержимому вложения, которое было загружено на вашу конечную точку.Вы можете использовать это в качестве аргумента для нового StreamContent в HttpClient.

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