2017-08-21 24 views
0

私はbase64でエンコードされた文字列を持っています。私はそれを解読し、渡すためにファイルを焼きたい。NotesStreamからファイル(pdf、txt、...)を書き込むにはどうすればよいですか?

Function DecodeBase64(attachmentValue As String,attachmentName As String) As String 
    Dim result As String 
    Dim s As New NotesSession 
    Dim fileOut As String 
    Dim fout As Integer 
    Dim foutOpen As Integer 
    Dim stream As NotesStream 
    Dim dc As NotesDocumentCollection 

    'fout = Freefile 

    fileOut = "C:\ExportFileLotus\" + attachmentName 
    'Open fileOut For Output As fout 
    'foutOpen = True 
    Set db = s.CurrentDatabase 
    Set doc = db.CreateDocument 

    s.ConvertMIME = False ' Do not convert MIME to rich text 
    Set body = doc.CreateMIMEEntity 
    Set header = body.CreateHeader(attachmentName) 
    Call header.SetHeaderVal("MIME document") 
    Set stream = s.CreateStream 
    Call stream.WriteText(attachmentValue,EOL_NONE) 
    If stream.Bytes = 0 Then 
     Messagebox fileInput,,"File has no content" 
     Goto ExitSub 
    End If 
    'Call body.SetContentFromText(stream, "text/plain;charset=UTF-8", ENC_BASE64) 
    'Call body.SetContentFromText(stream, "charset=UTF-8", ENC_BASE64) 
    Call body.SetContentFromBytes(stream, "", ENC_BASE64) 
    Call body.DecodeContent() 
    stream.Open fileOut, "binary" 
    body.GetContentAsBytes stream, True 
    stream.Close 

    'Print #fout, body.ContentAsText 
    'Close #fout 
    DecodeBase64 = fileOut 
ExitSub: 
    s.ConvertMIME = True ' Restore conversion 
End Function 

例:attachmentValue = "VG9pIGxhIFF1aQ ==" とATTACHMENTNAME = "file.pdf" 私はこれをコーディングします。 txtファイルを書き込むとうまくいきます。しかし、私はpdfファイルを書いている、それはエラーと開くことができません。 修正方法?手伝ってくれてありがとう!

+0

ストリームstream.WriteText(attachmentValue、EOL_CRLF)を呼び出します。これは正常に動作します。 –

答えて

1

pdfファイルのためのapplication/pdfに設定し、コンテンツタイプ:

Call body.SetContentFromText(stream, "application/pdf", ENC_BASE64) 
+0

コンテンツタイプをapplication/pdf for pdfに設定するにはどうすればよいですか? –

+0

私は自分の答えを広げました。 –

+0

まだバグです。私はPDFファイルを開くとき、それは次のように通知します。 "フォーマットエラー。PDFでないか、または補完されました。" –

1

私は自分の間違いを見つけます。 writeTextのフォーマットパラメータが間違っています。

Call stream.WriteText(attachmentValue, EOL_CRLF) 

が問題ありません。

関連する問題