Как автоматически удалить файл Excel после его создания на сервере и возврата пользователю? - PullRequest
2 голосов
/ 28 мая 2010

Я создаю файл Excel на веб-сервере, используя OleDb для соединения физического (а также физического) файла и добавления записей. Затем я возвращаю FilePathResult пользователю через MVC и хотел бы впоследствии удалить физический файл из-за проблем защиты данных в добавленных записях.

Я пытался использовать File.Delete в предложении Наконец , но я получаю ошибку File Not Found, которая должна означать, что файл исчез, когда MVC пытается отправить файл пользователю.

Я думал о создании файла как MemoryStream, но я думаю, что OleDb нужен физический файл для подключения, поэтому это не вариант.

Любые предложения о том, как удалить файл после его возврата за одну операцию?

Редактировать

Как я и просил, это то, из чего я работаю, хотя я не уверен, как это поможет:)

    Public Function ExportAllOutputs() As FilePathResult

        ' Create Export File Name
        Dim ExportFilename As String = Replace(Me.Name, " ", "_") & "_Outputs.xls"

        Try

            ' Create Export File
            CreateExportFile(ExportFilename)

            ' Populate Export File
            For Each OutputType As OutputTypeEnum In [Enum].GetValues(GetType(OutputTypeEnum))
                ExportHelper.AppendOutputs(ExportFilepath & ExportFilename, Me.GetOutputs(OutputType), Me.ProgrammeID)
            Next

            ' Return Export File
            Return ReturnExportFile(ExportFilename)

        Catch ex As Exception
            Throw
        Finally
            'If IO.File.Exists(ExportFilepath & ExportFilename) Then IO.File.Delete(ExportFilepath & ExportFilename)
        End Try

    End Function

1 Ответ

1 голос
/ 28 мая 2010

Немного хакер, но вы могли бы сделать, как показано ниже:

  1. чтение файла в байтовый массив в памяти с помощью File.ReadAllBytes (),
  2. удалить файл,
  3. формирует поток памяти вокруг байтового массива
  4. заставить MVC возвращать данные через поток, используя FileStreamResult.

Очевидно, что если файлы имеют большой размер, вы можете испытать давление памяти.

...