Some web services allow users to upload documents and document text using Base64 encoding.
The VB Script described below will extract the contents of a file on disk (most major file types will work with this including Excel, Word, PDF, JPG etc) and then encode those contents; the resulting converted data can then be attached using a Fixed/Dynamic Function to the relevant element within the web service call.
- Within the task create a task level Function called readBytes and add a parameter to the function called file. Insert the syntax to the Script tab as displayed below:
Dim inStream Set inStream=CreateObject("ADODB.Stream") inStream.Open inStream.type=1 inStream.LoadFromFile file readBytes=InStream.Read()
- Create a second task level Function called encodeBase64; this needs a parameter called bytes to be added. The syntax for this function is as follows:
Dim Cobj, CElem Set CObj = CreateObject("Microsoft.XMLDOM") Set CElem = Cobj.createElement("tmp") CElem.DataType = "bin.base64" CElem.NodeTypedValue = bytes encodeBase64 = CElem.Text
A task or global Variable is also required to accommodate the encoded output so that we can attach this to a Fixed/Dynamic Function within the Web Service Connector Tool step. The example below displays use of a task variable using the default name “variable1” – this has been set as a Parameter type variable with Task as the scope, although it can also be set as Task Instance.
- The final step is to add a Run VB Script step to the task and add the following script:
inFile = "C:\any_file_name.doc" 'Gets the input file read inByteArray = readBytes(inFile) 'Encode the data from the input file to Base64Encoded base64Encoded = encodeBase64(inByteArray) 'Output to a variable Variables("variable1") = base64Encoded
Replace the C:\ any_file_name.doc value with the file name that you want to use and substitute variable1 with the name of the variable that you have created (if you have amended the name from the default value).
This step will need to be placed before the Web Service Connector Tool step in the task in order to populate the variable with the encoded data from the selected file. Within the Web Service Connector Tool step, the variable can then be added to the Value tab of a Fixed/Dynamic Function and mapped to the relevant element that requires the encoded string.
Each web service will have its own process for the upload of document attachments and text, but in most cases it will also be necessary to define mappings containing the expected file extension and file name. Check the individual web service or API documentation for instructions.