Проблема: Возможно ли использование веб-клиента для публикации HttpPostedFileBase (доступно только в памяти, а не на диске.) На другую конечную точку?Опубликовать файл multipart/form-data из потока с веб-клиентом
Что я пробовал:
Я следующий контроллер, мы вывешиваем в файл с нашего веба-интерфейса и он связывается с параметром файла.
public class HomeController : Controller
{
[System.Web.Http.HttpPost]
public async Task<string> Index(HttpPostedFileBase file)
{
//file is not null here, everything works as it should.
//Here im preparing a multipart/form-data request to my api endpoint
var fileStreamContent = new StreamContent(file.InputStream);
using (var client = new HttpClient())
using (var formData = new MultipartFormDataContent())
{
formData.Add(fileStreamContent);
var response = await client.PostAsync("http://restapi.dev/api/files/add", formData);
var result = await response.Content.ReadAsStringAsync();
return result;
}
}
}
Мне нужно передать этот запрос к другому приложению, не является общедоступными (поэтому мы не можем размещать непосредственно от клиента) Этого контроллер выглядит следующим образом:
[RoutePrefix("api/files")]
public class FilesController : ApiController
{
[HttpPost]
[Route("add")]
public async Task<HttpResponseMessage> Add(HttpPostedFileBase file)
{
//This is the problem, file is always null when I post from my backend.
var files = HttpContext.Current.Request.Files.Count > 0 ? HttpContext.Current.Request.Files[0] : null;
return Request.CreateResponse(HttpStatusCode.OK);
}
}
file
всегда null, также files
. Что мне не хватает? Когда я использую postman и отправляю сообщение непосредственно в конечную точку API, он работает. Так что я предполагаю, что я делаю что-то не так в моем HomeController
?
Итак, это простой прокси-сервер на другом сервере? Что такое первый контроллер? MVC/WebAPI? Может ли это быть WebAPI? – spender
Да, точно, первый контроллер является контроллером MVC, а второй - контроллером WebAPI. Я могу изменить тип на обоих из них, если это облегчит решение проблемы. В идеале я просто хотел бы перейти к первому запросу прямо к моему контроллеру api. – JOSEFtw