ในการควบคุม MVC ปกติเราสามารถส่งออก PDF FileContentResult
ด้วย
public FileContentResult Test(TestViewModel vm)
{
var stream = new MemoryStream();
//... add content to the stream.
return File(stream.GetBuffer(), "application/pdf", "test.pdf");
}
แต่เราจะเปลี่ยนมันเป็นApiController
อย่างไร
[HttpPost]
public IHttpActionResult Test(TestViewModel vm)
{
//...
return Ok(pdfOutput);
}
นี่คือสิ่งที่ฉันพยายาม แต่ดูเหมือนจะไม่ทำงาน
[HttpGet]
public IHttpActionResult Test()
{
var stream = new MemoryStream();
//...
var content = new StreamContent(stream);
content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
content.Headers.ContentLength = stream.GetBuffer().Length;
return Ok(content);
}
ผลลัพธ์ที่ส่งคืนแสดงในเบราว์เซอร์คือ:
{"Headers":[{"Key":"Content-Type","Value":["application/pdf"]},{"Key":"Content-Length","Value":["152844"]}]}
และมีการโพสต์ที่คล้ายกันใน SO: กลับแฟ้มไบนารีจากตัวควบคุมใน ASP.NET Web API มันพูดเกี่ยวกับการส่งออกไฟล์ที่มีอยู่ แต่ฉันไม่สามารถทำงานกับสตรีมได้
ข้อเสนอแนะใด ๆ