1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| Function getAttachmentData (doc As NotesDocument) As variant
Dim session As New NotesSession
Dim stream As NotesStream
Dim export As NotesDXLExporter
Dim mime As NotesMIMEEntity
Dim txt As String
Dim Start As Double
Dim Finish As Double
Dim fileData As String
On Error GoTo processError
If Not doc Is Nothing Then
Set stream = session.CreateStream
Set export = session.CreateDXLExporter
'Convert the document to DXL
export.setInput doc
export.setOutput stream
export.process
'Process the export into a string file (as long as its less than 2GB)
txt=stream.ReadText
txt = Replace(txt, Chr(10), ||)
'Find the <filedata> tags and read what's between them
Start=InStr(1,txt,|<filedata>|)
Finish=InStr(1,txt,|</filedata>|)
fileData=Mid(txt,Start +10, Finish-Start-11)
'Truncate the stream and write the filedata into it
stream.Truncate
stream.WriteText fileData
'Setup a NotesMIMEEntity to decode the Base64 string
Set mime = doc.CreateMIMEEntity(|MIMEEntity|)
mime.SetContentFromText stream, |text/plain;charset=UTF-8|, ENC_BASE64
mime.DecodeContent
getAttachmentData = mime.ContentAsText
End If
Exit Function
processError:
text_log = "getAttachmentData new Error " & CStr(Err()) & ": " & |"| & Error() & |"| & " occurred on line " & CStr(Erl())
Call GetLog(text_log, session.CurrentDatabase.Server, session.UserName, "","","getAttachmentData")
Exit Function
End Function |
Partager