Page 1 of 1
libUrlMultipartFormData on android error
Posted: Thu Oct 01, 2020 4:37 pm
by BigameOver
Does the libUrlMultipartFormData support android?
I need to upload an image I captured on camera from the android device.
When I try to run it on android it doesn't work but when I do it on pc it does work.
Thank you
Re: libUrlMultipartFormData on android error
Posted: Thu Oct 01, 2020 4:52 pm
by Klaus
Always check the dictionary!
Il will list all platforms where a command/function is supported or not!
For "libURLMultipartFormData" it lists: mac, windows, linux, html5
so you are out of luck.
But take a look at the resulting FORM in the IDE, should be not to hard to "rebuild" that one,
it is just text in the end.
Re: libUrlMultipartFormData on android error
Posted: Fri Oct 02, 2020 8:27 am
by BigameOver
Klaus wrote: ↑Thu Oct 01, 2020 4:52 pm
But take a look at the resulting FORM in the IDE, should be not to hard to "rebuild" that one,
it is just text in the end.
How do I build a similar function?
I tried to replace the parts with the binfile that doesn't work but it still doesn't work.
Re: libUrlMultipartFormData on android error
Posted: Fri Oct 02, 2020 12:24 pm
by Klaus
BigameOver wrote: ↑Fri Oct 02, 2020 8:27 am
How do I build a similar function?
I did not mean to create a similar function, but to re-create the FORM that this command creates in the IDE.
BigameOver wrote: ↑Fri Oct 02, 2020 8:27 am
I tried to replace the parts with the binfile that doesn't work but it still doesn't work.
What did you try so far?
Please show us the script(s).
Re: libUrlMultipartFormData on android error
Posted: Fri Oct 02, 2020 1:28 pm
by Thierry
BigameOver wrote: ↑Fri Oct 02, 2020 8:27 am
take a look at the resulting FORM in the IDE, should be not to hard to "rebuild" that one,
How do I build a similar function?
I tried to replace the parts with the binfile that doesn't work but it still doesn't work.
Hi,
following Klaus idea....
1) get this interesting stack from minu:
viewtopic.php?f=11&t=34705&p=196809#p196802
2) find in the stack script those lines:
Code: Select all
set the httpHeaders to line 1 of tForm
post line 2 to -1 of tForm to url tUrl
3) set a breakpoint to the 2nd line and read the form text with the debugger.
HTH,
Thierry
Re: libUrlMultipartFormData on android error
Posted: Fri Oct 02, 2020 6:02 pm
by BigameOver
Thierry wrote: ↑Fri Oct 02, 2020 1:28 pm
BigameOver wrote: ↑Fri Oct 02, 2020 8:27 am
take a look at the resulting FORM in the IDE, should be not to hard to "rebuild" that one,
How do I build a similar function?
I tried to replace the parts with the binfile that doesn't work but it still doesn't work.
Hi,
following Klaus idea....
1) get this interesting stack from minu:
viewtopic.php?f=11&t=34705&p=196809#p196802
2) find in the stack script those lines:
Code: Select all
set the httpHeaders to line 1 of tForm
post line 2 to -1 of tForm to url tUrl
3) set a breakpoint to the 2nd line and read the form text with the debugger.
HTH,
Thierry
I checked this out and it returns some things that I dont understand like boundary, etc
Re: libUrlMultipartFormData on android error
Posted: Fri Oct 02, 2020 6:03 pm
by BigameOver
Klaus wrote: ↑Fri Oct 02, 2020 12:24 pm
What did you try so far?
Please show us the script(s).
Code: Select all
\
function libUrlMultipartFormDataAndroid @pFormData, pParam
local tNumParams,tNumParts,tBoundary,tKeys,tKey,tValue,tPart
local tFile,tNumFiles,tFilepath,tFilename,tSubBoundary
put the paramcount into tNumParams
if tNumParams < 1 then return "error Insufficient parameters"
put (tNumParams - 1) div 2 into tNumParts
put empty into pFormData ##ensure it is empty
answer "5.1"
##create initial boundary
put "__Part__" into tBoundary
put ulFormBoundary() after tBoundary
put "Content-type: multipart/form-data; boundary=" & quote & tBoundary & quote & return into pFormData
answer "5.12"
if tNumParams < 2 then
## do nothing for now, this will create empty shell for use with libUrlMultipartFormAddPart
else if tNumParams = 2 then ##treat as array
put keys(pParam) into tKeys
sort tKeys numeric
repeat for each line tKey in tKeys
put "--" & tBoundary & CRLF after pFormData
put "Content-Disposition: form-data; name=" & quote & item 1 of pParam[tKey] & quote after pFormData
put item 2 to -1 of pParam[tKey] into tValue
if char 1 to 6 of tValue = "<file>" then
put tValue into tFile
put empty into tValue
put char 7 to -1 of tFile into tFilepath
set the itemDel to "/"
put item -1 of tFilepath into tFilename
set the itemDel to comma
put ";" && "filename=" & quote & tFilename & quote after pFormData
put CRLF & "Content-Type: application/octet-stream" after pFormData
put tFile into tValue
answer "5.13"
if the result <> empty then
return "error" && the result
end if
end if
put CRLF & CRLF after pFormData
put tValue after pFormData
put CRLF after pFormData
end repeat
answer "5.2"
else if tNumParts > 0 then ##treat as key/value pairs
put 0 into tPart
repeat with i = 2 to tNumParams
if i mod 2 = 0 then ##stage 1 of part
add 1 to tPart
if tPart > tNumParts then exit repeat
put "--" & tBoundary & CRLF after pFormData
put "Content-Disposition: form-data; name=" & quote & param(i) & quote after pFormData
else
put param(i) into tValue
answer "5.5"
if char 1 to 6 of tValue = "<file>" then
put tValue into tFile
put empty into tValue
put char 7 to -1 of tFile into tFilepath
set the itemDel to "/"
put item -1 of tFilepath into tFilename
set the itemDel to comma
put ";" && "filename=" & quote & tFilename & quote after pFormData
put CRLF & "Content-Type: application/octet-stream" after pFormData
put tFile into tValue
if the result <> empty then
return "error" && the result
end if
end if
put CRLF & CRLF after pFormData
put tValue after pFormData
put CRLF after pFormData
end if
end repeat
end if
put "--" & tBoundary & "--" after pFormData ##end boundary
return empty
end libUrlMultipartFormDataAndroid
Re: libUrlMultipartFormData on android error
Posted: Fri Oct 02, 2020 10:57 pm
by mimu
Here you will find how multipart form-urlencoded data is structured:
https://dev.to/getd/x-www-form-urlencod ... -mins-5hk6
i' ve attached a samplestack to upload images to ImgBB
without using libUrlMultipartFormData.
So it should work on mobile
1. Set HttpHeader
Code: Select all
put "Content-type: multipart/form-data; " into theader
put "boundary=" & quote & "__Part__" & quote after theader
set the httpHeaders to theader
2. prepare post data
Code: Select all
function prepPostDatafromPath pimage
local tdata,tfilename,timageData
put url ("binfile:" & pimage) into timageData
set the itemdelimiter to slash
put last item of pimage into tfilename
put "--__Part__" & crlf into tdata
put "content-Disposition: form-data; name=" & quote & "image" & quote & ";filename=" & quote & tfilename & quote & crlf after tdata
put "content-Type: application/octet-stream" & crlf & crlf after tdata
put timageData & crlf after tdata
put "--__Part__--" after tdata
return tdata
end prepPostDatafromPath
3. post data to url
Code: Select all
put prepPostDatafromPath(pLocalFilePath) into tpostData
post tpostData to url tUrl
Re: libUrlMultipartFormData on android error
Posted: Mon Oct 05, 2020 9:49 am
by BigameOver
Thank you! It works perfect
