从数据库中读取二进制文件但不保存

时间:2014-08-25 08:27:38

标签: sql-server vb.net

我在VB中编写了一个Windows窗体程序

在我的项目中,如果单击一个按钮,我想要显示保存在数据库中的文件(pdf或单词)。我使用此代码执行此操作,此代码工作正常。但是文件会复制到我项目的bin文件夹中。我希望这些文件只显示在屏幕上但不保存在任何地方。任何人都可以帮助我吗?

            Try
                Using dr As SqlDataReader = cmd.ExecuteReader()
                    While dr.Read()
                        Dim size As Integer = 1024 * 1024
                        Dim buffer As Byte() = New Byte(size - 1) {}
                        Dim readBytes As Integer = 0
                        Dim index As Integer = 0
                        filename = dr("DocName")
                        Using fs As New FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None)

                            While (InlineAssignHelper(readBytes, CInt(dr.GetBytes(0, index, buffer, 0, size)))) > 0
                                fs.Write(buffer, 0, readBytes)
                                index += readBytes
                            End While
                        End Using
                    End While
                End Using
            Catch ex As Exception
                Dim errMessageBox As New Puzzle.ErrorHandler
                errMessageBox.ShowError("Err", "FrmCustomer:DbTools_GetAttachFile", "line", ex.Message)
                Exit Sub
            Finally
                ConImage.Close()
            End Try
        End Using

        Dim prc As New Process()
        prc.StartInfo.FileName = filename
        prc.Start() 

1 个答案:

答案 0 :(得分:1)

只需修改以下行即可。

'filename = dr("DocName")             ' replace this line
filename = IO.Path.GetTempFileName    ' with this

基本上,IO.Path.GetTempFileName将在Windows Temp文件夹中获取临时文件名。此文件夹用于保存临时文件,通常由各种磁盘清理工具自动清理,或者当您要求窗口回收浪费的空间时(通过磁盘清理程序)。

请注意,打开文件时需要相同的filename