Upload a large object in the request body

This example demonstrates how to upload a large object in the message response body.

To upload a large object (LOB) to a web service server, specify an input parameter using a TEXT or BYTE data type. The large object is sent in the request body. Any binary file contents (image, PDF, zip, etc.) may be uploaded using this method.

Example: Uploading a BYTE object and writing to a file

In this example:
  • The large object is transferred in the BYTE input parameter b in the message body.
  • The writeFile() method writes the content of the variable b to a file (help.pdf) on the server side.
IMPORT os

PUBLIC FUNCTION UploadByteToFile(b BYTE)
  ATTRIBUTES (WSPost,
              WSDescription="Upload BYTE and write to file on server",
              WSPath="/help/pdf")
  RETURNS STRING
    CONSTANT filename = "help.pdf"
    DEFINE ret STRING
    TRY   
       CALL b.writeFile(filename)
       LET ret = SFMT("Data received, saved to file: %1",filename)
    CATCH
       LET ret = SFMT(" Error getting data, not saved to file: %1",filename)
    END TRY 
    RETURN ret
END FUNCTION

Example: Client app calling the function

The client needs to load a BYTE object before calling the function.

IMPORT util
IMPORT FGL clientGWSStub

MAIN
  DEFINE wsstatus INTEGER
  DEFINE retS STRING
 
  DEFINE b BYTE
  LOCATE b IN MEMORY
  CALL b.readFile("help.pdf")

  CALL clientGWSStub.UploadByteToFile(b) RETURNING wsstatus, retS
  CASE wsstatus
    WHEN clientGWSStub.C_SUCCESS
      DISPLAY SFMT("Got %1 ", retS)
    OTHERWISE
      DISPLAY "wsstatus is : ", wsstatus
      DISPLAY "Error in getting file uploaded"
  END CASE

END MAIN
In this example:
  • A BYTE variable b is created to hold the large object and the LOCATE instruction specifies where it is stored (MEMORY or FILE).
  • The readFile() method reads the contents of a PDF file (help.pdf) into the BYTE variable b.
  • A call to the server function is made specifying b as the input parameter. The data is transferred in the request body.