問題:是否有可能使用Web客戶端將HttpPostedFileBase(僅在內存中,而不是在磁盤上)發佈到另一個端點?從Web客戶端流發佈多部分/表格數據文件
我已經試過什麼:
我有以下的控制器,我們從我們的前端文件發佈,並將其綁定到文件的參數。
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
。 我錯過了什麼?當我使用郵遞員並直接發佈到API端點時,它可以工作。所以即時猜測,即時通訊在我的HomeController
做錯了什麼?
所以這是一個簡單的代理到另一臺服務器上?第一個控制器是什麼? MVC/WebAPI?它可能是WebAPI嗎? – spender
是的,第一個控制器是MVC控制器,第二個控制器是WebAPI控制器。如果這樣可以更容易地解決問題,我可以改變它們的類型。理想情況下,我只想直接向我的api控制器傳遞第一個請求。 – JOSEFtw