我有一个具有以下表格的数据库,但我没有办法解密它
- DATA,TYPE,FILE TYPE,SIZE,DOC TYPE
- 0x15234324,Word.Document.8,DOC,19968,WORD.DOCUMENT.8
该字段似乎包含存储在sql Server IMAGE列中的word文档
有没有人遇到这个或以可读格式提取这些数据?
到目前为止,我已经尝试使用PHP来提取文件并将其写入word文档,但没有太多运气.
更新:我现在有Visual Studio Express,想要一种提取这些数据并保存到word文档的方法
UPDATE2:这是我在VB sofar中所拥有的
- Imports System.Data.sqlClient
- Imports System.IO
- Public Class Form1
- Private Shared Function RetrieveFile(ByVal filename As String) As Byte()
- Dim connection As New sqlConnection("Server=sqlsrv;database=database;Trusted_Connection=Yes;")
- Dim command As New sqlCommand("select data from objects where object_ref in (select data from parts where object_ref =239804)",connection)
- command.Parameters.AddWithValue("test",filename)
- connection.Open()
- Dim reader As sqlDataReader = command.ExecuteReader(System.Data.CommandBehavior.SequentialAccess)
- reader.Read()
- Dim memory As New MemoryStream()
- Dim startIndex As Long = 0
- Const ChunkSize As Integer = 256
- While True
- Dim buffer As Byte() = New Byte(ChunkSize - 1) {}
- Dim retrievedBytes As Long = reader.GetBytes(1,startIndex,buffer,ChunkSize)
- memory.Write(buffer,CInt(retrievedBytes))
- startIndex += retrievedBytes
- If retrievedBytes <> ChunkSize Then
- Exit While
- End If
- End While
- connection.Close()
- Dim data As Byte() = memory.ToArray()
- memory.Dispose()
- Return data
- End Function
- Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button2.Click
- Dim saveFileDialog1 As New SaveFileDialog()
- saveFileDialog1.Filter = "Doc File|*.doc"
- saveFileDialog1.Title = "Save an doc File"
- saveFileDialog1.ShowDialog()
- If saveFileDialog1.FileName <> "" Then
- Dim fs As New System.IO.FileStream(saveFileDialog1.FileName,System.IO.FileMode.Create,System.IO.FileAccess.Write)
- Dim data As Byte() = RetrieveFile("test.doc")
- fs.Write(data,data.Length)
- fs.Flush()
- fs.Close()
- End If
- End Sub
- End Class
解决方法
我写了一个VBS脚本,暂时从sharepoint blob中提取数据,这是它的通用版本:
- Const adOpenKeyset = 1
- Const adLockOptimistic = 3
- Const adTypeBinary = 1
- Const adSaveCreateOverWrite = 2
- strsqlServer = "YOURSERVER"
- strsqlDatabase = "YOURDB"
- strRecordID = "123"
- strTempFileName = "c:\output.doc"
- Set objConn = CreateObject("ADODB.Connection")
- Set objRS = CreateObject("ADODB.RecordSet")
- Set objStream = CreateObject("ADODB.Stream")
- objConn.Open "Provider=sqlOLEDB;data Source=" & strsqlServer & ";Initial Catalog=" & strsqlDatabase & "; Trusted_Connection=yes;"
- objRS.Open "Select * from AllDocStreams WHERE ID='" & strRecordID & "'",objConn,adOpenKeyset,adLockOptimistic
- objStream.Type = adTypeBinary
- objStream.Open
- objStream.Write objRS.Fields("Content").Value
- objStream.SaveToFile strTempFileName,adSaveCreateOverWrite
- objRS.Close
- objConn.Close