[Progress Communities] [Progress OpenEdge ABL] Forum Post: RE: PASOE/REST/DOH - File Download

Status
Not open for further replies.
I

Irfan

Guest
Hi Louis, Here is an example I wrote to upload multipart data. In this example I am not uploading to database, but I am able to extract the payload correctly. method override protected integer HandlePost(INPUT poRequest AS IWebRequest): define variable oResp as IHttpResponse no-undo. define variable oEntity as MultipartEntity no-undo. define variable oPart as MessagePart no-undo. define variable oEntityWriter as MessageWriter no-undo. define variable oHeader as HttpHeader no-undo. define variable response as WebResponse no-undo. define variable writer as WebResponseWriter no-undo. define variable cImageFileName as character no-undo. def var i as integer. def var memptr1 as class memptr. response = new WebResponse(). response:StatusCode = 200. response:StatusReason = "OK". writer = new WebResponseWriter( response ). oEntityWriter = EntityWriterBuilder:Build(poRequest) :Writer. oEntityWriter:Open(). oEntityWriter:Write(poRequest:Entity). oEntityWriter:Close(). message " My ContentType is " poRequest:GetHeader("Content-Type"):Value. assign oEntity = cast(oEntityWriter:Entity, MultipartEntity). writer:write( " " ). writer:write( " " ). writer:write( " Round Trip " ). writer:write( " " ). writer:write( " " ). writer:write( " Multipart Request Payload " ). DO i = 1 TO oEntity:Size: oPart = oEntity:GetPart(Integer(i)). oHeader = oPart:Headers:Get('Content-Disposition':u). cImageFileName = oHeader:GetParameterValue('filename':u). if type-of(oPart:Body,ByteBucket) then do: memptr1 = cast(oPart:Body, ByteBucket):GetBytes(). writer:Write(" element position is " + String(i)). writer:Write(" Image name: " + cImageFileName). writer:Write(" Image size: " + String(GET-SIZE(memptr1:value))). writer:write(" Content-Type: " + oPart:ContentType). writer:write(" "). end. else do: writer:Write(" element position is " + String(i)). writer:Write(" Text Name: " + String(oPart:Body)). writer:write(" Content-Type: " + oPart:ContentType). writer:write(" "). end. END. writer:write( " " ). writer:write( " " ). writer:close(). writer:flush(). return integer(StatusCodeEnum:OK). END METHOD.

Continue reading...
 
Status
Not open for further replies.
Top