Reg Exp
Web Design
Notes Client
Move Web Attachment To Rich Text Field
The file upload control feature provided in Notes is used to attach files to a document from the web. But it ends up placing the attachment at the bottom of your document instead of in a rich text field. (Those of us who have been using Notes for a long time know this as a "V2 Attachment"). Here is some script that will take the attachment and place it into a rich text field. Place this code into your web query save agent for the form being created.

Sub Initialize
   Dim s As New notesSession
   Dim doc As notesDocument
   Set doc = s.documentContext
   Call WebMoveAttachment(Doc, "<Your Rich Text Field Name>")
End Sub

The subroutine "WebMoveAttachment" does the work of moving the attachment to the rich text field.

Function WebMoveAttachment(doc As notesDocument, Byval moveToFieldName As String)
   ' This function moves a file attached via the Web with the File Upload Control to a rich text field.
   Dim s As New notesSession
   Dim tempDir As String
   Dim v2FileNames As Variant
   Dim i As Integer
   Dim attachedFile As notesEmbeddedObject
   Dim filePath As String
   Dim rtItem As notesRichTextItem
   tempDir = s.getEnvironmentString("Directory", True)
   ' Put a trailing slash at the end of the directory if it is needed
   If Instr(tempDir, "/") <> 0 And Right(tempDir, 1) <> "/" Then tempDir = tempDir & "/"
   If Instr(tempDir, "\") <> 0 And Right(tempDir, 1) <> "\" Then tempDir = tempDir & "\"
   ' Get the names of all the attachments (1 or more)
   v2FileNames = Evaluate("@AttachmentNames", doc)
   For i = Lbound(v2FileNames) To Ubound(v2FileNames)
      If v2FileNames(i) <> "" Then   ' Make sure it's a valid file name
         Set attachedFile = doc.getAttachment(v2FileNames(i))
         filePath = tempDir & v2FileNames(i)
         ' Save the file on the server
         Call attachedFile.extractFile(filePath)
         ' Create the rich text item and re-attach the file
         If doc.hasItem(moveToFieldName) Then
            Set rtItem = doc.getFirstItem(moveToFieldName)
            ' Add a couple of lines to the rich text field before re-attaching the file
            Call rtItem.addNewLine(2)
            Set rtItem = New notesRichTextItem(doc, moveToFieldName)
         End If
         Call rtItem.embedObject(1454, "", filePath)
         ' Delete the file(s) from the server file system
         Kill filePath
      End If
   Next   ' Move on to the next file name
End Function

Important: This function requires the ability to run UNRESTRICTED agents on the server. This is because the agent interfaces with the file system, which required unrestricted access.