Читать поток и открыть этот документ - PullRequest
0 голосов
/ 15 октября 2010

У меня есть объект потока, в котором у меня есть какой-то документ, я знаю, что это за документ, как я могу открыть этот документ, не сохраняя его в файл физически. Поэтому я хочу напрямую открыть документ из самого потока, не сохраняя его.

Как это сделать? Я делаю это в C #

Ответы [ 4 ]

0 голосов
/ 16 октября 2010

Почему вы не можете сохранить файл?

Я использовал GetTempFilename для хорошего эффекта в прошлом.Я не могу точно вспомнить, в каком классе он, наверное, System.Environment или File.В любом случае, вы можете быть уверены, что файл будет находиться в системной временной папке, поэтому вы можете безопасно удалить файл, как только закончите.

0 голосов
/ 15 октября 2010

К сожалению, большинству программ (Word, Excel, Notepad, ...) требуется имя файла для открытия файла.Так что я думаю, что нет реального решения вашей проблемы.

Единственной мыслью было бы написать Драйвер фильтра файловой системы , который возвращает MemoryStream для виртуального имени файла, но этот драйвер имеетбыть написанным на C ++ и не самым простым.

0 голосов
/ 15 октября 2010

Вот как я это делаю, но я знаю имя файла.этот метод вызывается на пустой странице aspx (я имею в виду без разметки html, кроме строки <@Page ... />)

private void LoadAttachment()
    {
            byte[] ImageData = ... get data from somewhere ...

            Response.Buffer = true;
            String filename = "itakethis.fromdatabase";
            Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
            Response.ContentType = GetMimeType(filename);//you can try to extrapolate it from file extension
            if(ImageData.Length > 0)
                Response.BinaryWrite(ImageData);
            else
                Response.BinaryWrite(new byte[1]);
            Response.Flush();
            ApplicationInstance.CompleteRequest();
    }

`

0 голосов
/ 15 октября 2010

Вы можете использовать MemoryStream, чтобы использовать документ только в оперативной памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...