ASP.NET: скачать файл PowerPoint с помощью Сохранить как - PullRequest
1 голос
/ 22 сентября 2010

Я создаю файл PowerPoint, используя этот в качестве ссылки.Пользователь может искать других пользователей на основе многих критериев.Информация о пользователе сохраняется в файле PowerPoint.Но я не могу сохранить все файлы PowerPoint на сервере.

Итак, пользователю нужно щелкнуть правой кнопкой мыши ссылку, выбрать «Сохранить как ...» и сохранить файл локально.

Ничего не должно быть сохранено на сервере.Я был в Google, но я не уверен, что искать.Не могли бы вы указать хороший учебник?

Кажется, я плохой гуглер.Я удалил «powerpoint» из строки поиска, и было много совпадений.Но, тем не менее, любой комментарий приветствуется.

1 Ответ

2 голосов
/ 22 сентября 2010

Вы должны получить файл в виде потока, открыть его с помощью open xml sdk (у вас должен быть Open XML SDK: здесь ).

Если вы не знакомы с Open XML SDK, вы также можете посмотреть пост в блоге здесь , который также взят из блога, на который вы уже ссылались.

Ниже приведен пример кода, как я создаю отчет и отправляю клиенту, используя Open XML SDK с ASP.NET. Я надеюсь, что это может быть полезно.

public void SendReport()
{
    using (Stream stream = GetReportStream())
    {
        stream.Position = 0;
        byte[] buffer = new byte[(int)stream.Length];
        stream.Read(buffer, 0, (int)stream.Length);
        System.Web.HttpContext.Current.Response.Clear();
        System.Web.HttpContext.Current.Response.Buffer = true;
        System.Web.HttpContext.Current.Response.AddHeader("Content-Type", "application/pptx");
        System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=Report;");

        System.Web.HttpContext.Current.Response.BinaryWrite(buffer);
        System.Web.HttpContext.Current.Response.Flush();
        System.Web.HttpContext.Current.Response.Close();
    }
}

private Stream GetReportStream()
{
    MemoryStream stream = new MemoryStream();
    using (FileStream file = File.Open(@"TemplateFileLocation", FileMode.Open))
    {
        byte[] buffer = new byte[file.Length];
        file.Read(buffer, 0, (int)file.Length);
        stream.Write(buffer, 0, buffer.Length);
    }
    using (PresentationDocument presentationDocument = PresentationDocument.Open(stream, true))
    {
        // Doing manipulations explained in your reference document link.

        presentationDocument.PresentationPart.Presentation.Save();
    }
    return stream;
}

Не забудьте скачать и проверить все решение по ссылке, на которую вы ссылались.

...