[英]C# WebAPI to download PowerPoint file using memory stream
到目前為止,這是我下載 powerpoint 文件的代碼。 我使用 aspose package 作為 powerpoint 這是 aspose 文檔https://docs.aspose.com/dashboard.action的鏈接
[HttpGet]
[Route("exportpowerpoint1")]
public HttpResponseMessage Export()
{
using (Presentation presentation = new Presentation(HttpContext.Current.Server.MapPath("~/PPTexports/testfile.pptx")))
{
MemoryStream stream = new MemoryStream();
presentation.Save(stream, SaveFormat.Pptx);
stream.Position = 0;
var returnResult = Request.CreateResponse(HttpStatusCode.OK);
returnResult.Content = new StreamContent(stream);
returnResult.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.presentationml.presentation");
returnResult.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "testfile.pptx"
};
return returnResult;
}}
使用此代碼,我可以下載文件,但是當我打開文件時,powerpoint 會給出此錯誤消息,並且文件的大小也會加倍
錯誤信息:powerpoint 在 testfile.pptx 中發現不可讀的內容
我認為 memory stream 將文件寫入兩次,這是由於內容重復而導致文件大小加倍並且文件無法打開的原因,但我無法找到問題的原因有人可以幫忙嗎?
嘗試這個:
[HttpGet]
[Route("exportpowerpoint1")]
public HttpResponseMessage Export()
{
var returnResult = Request.CreateResponse(HttpStatusCode.OK);
returnResult.Content = new StreamContent(File.OpenRead(HttpContext.Current.Server.MapPath("~/PPTexports/testfile.pptx")));
returnResult.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.presentationml.presentation");
returnResult.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "testfile.pptx"
};
return returnResult;
}
不要做我所做的並將 MemoryStream 放在 using 塊中......您將不會收到任何響應,因為它在發送內容之前已被處置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.