WebAPI 使用内存流下载 PowerPoint 文件
WebAPI to download PowerPoint file using memory stream
我在使用 Powerpoint 演示文稿库 (Syncfusion) 下载包含内容的文件时遇到问题。文档仅提供 ASP 示例,没有具体的 Web API。
我可以将文件保存到具有我添加到 Powerpoint 的上下文的文件系统。
我可以获得 API 以将文件下载到用户浏览器,但此 Powerpoint 是空的。
Syncfusion 具有将 Powerpoint 保存到内存流的功能,所以我想我的问题是 将流中的内容保存到用户浏览器的文件的正确方法是什么?
我正在使用 HTTPGet 并通过浏览器点击 link。
我需要发送上下文类型或类似的东西吗?
感谢您的帮助,
如果有帮助,我可以提供目前所掌握的信息。
柯蒂斯
编辑:
[HttpGet, Route("")]
public HttpResponseMessage Get()
{
var presentation = Presentation.Create();
var firstSlide = presentation.Slides.Add(SlideLayoutType.Blank);
var textShape = firstSlide.AddTextBox(100, 75, 756, 200);
var paragraph = textShape.TextBody.AddParagraph();
paragraph.HorizontalAlignment = HorizontalAlignmentType.Center;
var textPart = paragraph.AddTextPart("Kurtis' Presentation");
textPart.Font.FontSize = 80;
var memoryStream = new MemoryStream();
presentation.Save(memoryStream);
var result = Request.CreateResponse(HttpStatusCode.OK);
result.Content = new StreamContent(memoryStream);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "export.pptx"
};
return result;
}
这就是我所拥有的,该库将演示文稿保存到内存流中,您可以将参数更改为将其写入文件的字符串,并且可以选择为 MVC 传递文件名、格式和 HttpResponse但我无法在我的 API 控制器上使用它。我一直收到网络错误,但不知道为什么。
再次感谢
在评论中其他人的帮助下,我发现了我的问题。
上面的代码有效,但我需要将流位置重置为零才能实际写入数据。
memoryStream.Position = 0;
感谢那些发表评论的人。 :-)
我在使用 Powerpoint 演示文稿库 (Syncfusion) 下载包含内容的文件时遇到问题。文档仅提供 ASP 示例,没有具体的 Web API。
我可以将文件保存到具有我添加到 Powerpoint 的上下文的文件系统。
我可以获得 API 以将文件下载到用户浏览器,但此 Powerpoint 是空的。
Syncfusion 具有将 Powerpoint 保存到内存流的功能,所以我想我的问题是 将流中的内容保存到用户浏览器的文件的正确方法是什么?
我正在使用 HTTPGet 并通过浏览器点击 link。
我需要发送上下文类型或类似的东西吗?
感谢您的帮助,
如果有帮助,我可以提供目前所掌握的信息。
柯蒂斯
编辑:
[HttpGet, Route("")]
public HttpResponseMessage Get()
{
var presentation = Presentation.Create();
var firstSlide = presentation.Slides.Add(SlideLayoutType.Blank);
var textShape = firstSlide.AddTextBox(100, 75, 756, 200);
var paragraph = textShape.TextBody.AddParagraph();
paragraph.HorizontalAlignment = HorizontalAlignmentType.Center;
var textPart = paragraph.AddTextPart("Kurtis' Presentation");
textPart.Font.FontSize = 80;
var memoryStream = new MemoryStream();
presentation.Save(memoryStream);
var result = Request.CreateResponse(HttpStatusCode.OK);
result.Content = new StreamContent(memoryStream);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "export.pptx"
};
return result;
}
这就是我所拥有的,该库将演示文稿保存到内存流中,您可以将参数更改为将其写入文件的字符串,并且可以选择为 MVC 传递文件名、格式和 HttpResponse但我无法在我的 API 控制器上使用它。我一直收到网络错误,但不知道为什么。
再次感谢
在评论中其他人的帮助下,我发现了我的问题。
上面的代码有效,但我需要将流位置重置为零才能实际写入数据。
memoryStream.Position = 0;
感谢那些发表评论的人。 :-)