Это мой код для загрузки файла PowerPoint. Я использовал пакет aspose для 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
Я думаю, что поток памяти записывает файл два раза, поэтому размер увеличился вдвое, и файл не может быть открыт из-за дублирующегося содержимого, но я не могу найти причину проблемы. Кто-нибудь может помочь?
presentation.Save()
в нужном месте? В этот момент вы ничего не читали в поток. Также вы не должны возвращатьIHttpActionResult
изFileHttpActionResult
. Вы смотрели загруженный файл в блокноте, например? Я предполагаю, что в нем есть куча текста из html, если это был правильныйpptx
, вы должны были изменить расширение на .zip и открыть его с помощью winzip. - person cjb110   schedule 20.11.2019