0

xmlhttprequest を介して実行され、UNID と Base64 でエンコードされたイメージをパラメーターとして受け入れるエージェントを作成しようとしています。

私が求めているのは、エージェントがbase64文字列をデコードし、それをインライン画像としてRichTextフィールドに書き込むことです

base64でエンコードされた文字列をストリームに書き込んでみました。次に、子エンティティを持つMimeEntityを作成し、ストリームからコンテンツを設定してから、MimeEntityアイテムを取得してRichTextItemに追加しました

.
.
.
Call stream.Writetext(data)
.
Set body = doc.CreateMIMEEntity("RT")   


Set header = body.CreateHeader("Content-Type") 
Call header.SetHeaderVal("multipart/mixed")
.
Set child = body.CreateChildEntity() 
Call child.Setcontentfrombytes(stream, "image/jpeg", 1727) 
Call child.Decodecontent()
.
Call RT.AppendRTItem(MimeEntityItem)

しかし、最終的には 6400 バイトの画像/jpeg ファイルになってしまい、それ以上のことはできません。

このようなものを機能させる方法について手がかりを持っている人はいますか? よろしくお願いします=)

編集:

わかりました、有効なbase64文字列を含むファイルを作成するだけだと思いましたが、デコードされません


わかりました今、私は少なくともこれまでに得ました:

  Option Public
  Option Declare

  Sub Initialize

      Dim session As NotesSession
      Dim doc As NotesDocument
      Dim query_string As String
      Dim params As Variant
      Dim i As Integer
      Dim db As NotesDatabase
      Set session = New NotesSession
      Set doc = session.DocumentContext
      query_string = doc.QUERY_STRING(0)

  On Error GoTo errorrt
      params = Split (query_string,"&")

      Print("<html><head></head><body>")

      Print params(1);
      Print("<br>")
      Print ({<img src="data:image/png;base64,} & params(2) & {"></img>})
      Set db = session.Currentdatabase
      Set doc = db.Getdocumentbyunid(params(1))
      If doc Is Nothing Then
          Print ("Ne")
      End If
      Print (doc.Getitemvalue("tatkun")(0))
      Print ("</body></html>")

      Call AttachSignature(doc,params(2),"signature")

      Exit Sub
  errorrt:
      Print (Error & " " & erl)
      Exit Sub
  End Sub


  Function AttachSignature(doc As NotesDocument, data As Variant, filename As String) As Boolean

  AttachSignature = False

  Dim session As New NotesSession
  Dim db As NotesDatabase
  Dim body As NotesMIMEEntity
  Dim header As NotesMIMEHeader
  Dim child As NotesMIMEEntity
  Dim stream As NotesStream
  Dim fileType As String
  Dim rt1 As NotesRichTextItem
  Dim rt2 As NotesRichTextItem

  On Error GoTo ErrorRoutine

  Set db = doc.Parentdatabase
  Set stream = session.CreateStream

  Call stream.Writetext(data) 'Write the Data to the Stream


  If doc.Getitemvalue("SignatureAttached")(0) = "1" Then
      Exit Function
  End If

  Set body = doc.CreateMIMEEntity("TempRT")     

  Set header = body.CreateHeader("Content-Type") 
  Call header.SetHeaderVal("multipart/mixed")

  Call body.CreateHeader("Content-Disposition"). _
  SetheaderValAndParams({attachment; filename="} &filename & {"})


  Set child = body.CreateChildEntity()

  fileType = "image/jpeg"

      Call child.SetcontentfromText(stream, fileType, 1727) 
      Call stream.Close() 
      Call body.Decodecontent()

  Call doc.save(False, False)

  Set rt1 = doc.GetFirstItem("signature")
  Set rt2 = doc.GetFirstItem("TempRT")

  Call rt1.AppendRTItem( rt2 )
  Call rt2.Remove()

  doc.SignatureAttached = "1"

  Call doc.save(False, False)

  AttachSignature = True

  Exit Function

  ErrorRoutine:
   If Not rt2 Is Nothing Then
      Call rt2.Remove()
   End If 
   Print (Error & " " & Erl)
   Exit Function
  End Function

RichTextアイテムに有効な画像を追加する=)

しかし、インライン画像にする方法がわかりません。また、ファイル名も正しくありません。

もう一度助けてくれてありがとう=)

4

2 に答える 2

0

multipart/mixedではなくmultipart/relatedを使用し、画像を格納するMIMEEntityにContent-ID:ヘッダーを割り当ててから、画像内のコンテンツIDを参照するために使用したいと考えています。

于 2012-10-11T18:52:51.837 に答える