cancel
Showing results for 
Search instead for 
Did you mean: 

HTTP:POST upload file - how?

hansg
Explorer
0 Kudos
1,317

Is it possible with a Stored Procedure to upload a file?

I want to replace this by a Stored Procedure function:

curl -X 'POST' \\ 'https://dev.somesite/api-external/stock/import-file' \\

-H 'accept: application/json' \\

-H 'authorization: Basic dHN....==' \\

-H 'Content-Type: multipart/form-data' \\

-F 'File=@myfile.csv;type=application/vnd.ms-excel'

My Stored Procedure:

ALTER PROCEDURE "DBA"."sp_tsd_catalogus_toc"(IN "file" NTEXT)

result( "Attribute" long NVARCHAR,"Values" long NVARCHAR, instance INTEGER )

url 'https://dev.somesite.com/api-external/stock/import-file'

type 'HTTP:POST'

header 'accept:application/json\\nauthorization: Basic dHNk...==\\ncontent-Type:multipart/form-data'

With this I got a 400 error. I think because the in parameter 'file' contains the content of the file. Is it possible to save a file at the serverside and post that filename in de SP?

Anybody an idea?

Tia Hans

VolkerBarth
Contributor
0 Kudos

I would generally use the "web client debug feature" (aka the -zoc database server option or via "CALL sa_server_option('WebClientLogging', 'On')") to check the request sent to the web server.

Accepted Solutions (1)

Accepted Solutions (1)

fvestjens
Participant
0 Kudos

We upload documents in the database

CREATE SERVICE rawUploadDocument
TYPE 'raw' 
AUTHORIZATION OFF 
USER "USR" 
METHODS 'POST'
AS 
CALL UploadDocument(HTTP_BODY())

In this procedure in the end we store the file on disc

 set l_FullFilename = 'c:\\images\\word\\'\\|| Description ||'.'|| Extension
 select xp_write_file(l_FullFilename,BASE64_DECODE(Image))

We use Json to send the image base 64 encoded

{"extension": "docx"
 "Description": "Quote for customer xxxxxx"
 "Image": "....." -- Image Base64 encoded

I hope this wil help

Answers (1)

Answers (1)

hansg
Explorer
0 Kudos

I asked the API developer to modify there API to accept the content of the file, instead of a file upload. So the problem is 'solved', I can upload my data with SA17 now.