We Want to Hear From You! What Do You Want to See on the Community? Tell us here!
Forum Discussion
kirantara
6 years agoExplorer | Level 3
Error In Uploading a file
Hello Experts
I am New To Dropbox Api And Today i was trying to uplaod a file from api but got error .
Unknown API function: "files/upload \\eHiSS5jxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
i am using Http api and my code is
function main()
local oHTTP,cJSON,url
setmode(25,80)
ctoken := "<REDACTED>"
url := "https://content.dropboxapi.com/2/files/upload \" + ctoken
cJSON := '{"c:\tmp\pdf\CKF1907319.pdf","mode": "add","autorename": true,"mute": false,"strict_conflict": false,}'
URL
? cjson
wt = inkey(0)
oHTTP := CREATEOBJECT('Msxml2.ServerXMLHTTP.6.0')
oHTTP:OPEN("POST", url , .F.)
oHTTP:setRequestHeader("Content-Type", "application/octet-stream")
oHTTP:SEND(cJSON)
IF oHTTP:status != 200
? oHTTP:responseText
hb_memowrit("response.txt",oHTTP:responseText)
? "Error"
ELSE
? oHTTP:responseText
hb_memowrit("response.txt",oHTTP:responseText)
ENDIF
wt = inkey(0)
return
Please me to solve this issue
Vikram
11 Replies
- Greg-DB6 years ago
Dropbox Community Moderator
[ Cross-linking for reference: https://stackoverflow.com/questions/61251822/unknown-api-function-files-upload ]
I've posted an answer on your StackOverflow question. Hope this helps!
- kirantara6 years agoExplorer | Level 3
Thank For your reply
But After Change the url as you suggested i got same error
Unknown API function: "files/upload \\Authorization:eHiSS5jXq0AAAAAAAAAAduAlRf3zXNAV8zYWtJ12Iirzoxxxxxxxxxxx".
function main()
local oHTTP,cJSON,url
setmode(25,80)
ctoken := "eHiSS5jXq0AAAAAAAAAAduAlRf3zXNAV8zYWtJ1xxxxxxxxxxxxxxxxx"
* // cJSON = {"path": "hb_cwd()+"report.txt","mode": "add","autorename": true,"mute": false,"strict_conflict": false"}
url := "https://content.dropboxapi.com/2/files/upload \" + "Authorization:" + ctoken
cJSON := '{"c:\tmp\pdf\CKF1907319.pdf","mode": "add","autorename": true,"mute": false,"strict_conflict": false,}'
? URL
? cjson
wt = inkey(0)oHTTP := CREATEOBJECT('Msxml2.ServerXMLHTTP.6.0')
oHTTP:OPEN("POST", url , .F.)
oHTTP:setRequestHeader("Content-Type", "application/octet-stream")
oHTTP:SEND(cJSON)
IF oHTTP:status != 200
? oHTTP:responseText
hb_memowrit("response.txt",oHTTP:responseText)
? "Error"
ELSE
? oHTTP:responseText
hb_memowrit("response.txt",oHTTP:responseText)
ENDIF
wt = inkey(0)
returnplease give example in http format how the api link look like
https://content.dropboxapi.com/2/files/upload \Authorization:eHiSS5jXq0AAAAAAAAA
AduAlRf3zXNAV8zYWtJ12IirzonOa58ixxxxxxxxxxx
{"c:\tmp\pdf\CKF1907319.pdf","mode": "add","autorename": true,"mute": false,"str
ict_conflict": false,}Please help to issue the error
Thank You
Vikram
- Greg-DB6 years ago
Dropbox Community Moderator
In this code, you're still putting the access token on the URL, but additionally with the string "Authorization". You should instead be sending this as a header. Based on the rest of your code, for your client that would probably look something like this:
oHTTP:setRequestHeader("Authorization", "Bearer" + ctoken)
Likewise, note that for /2/files/upload, the API call parameters (your cJSON), should go in a "Dropbox-API-Arg" header, and the file data to upload should go in the request body. Please refer to the /2/files/upload documentation for more information on how to properly format this API call.
- kirantara6 years agoExplorer | Level 3
Thank You SIr
But Couldn't understand the issue please check my code and rectfiy the code where am wrong .
function main()
local oHTTP,cJSON,url
setmode(25,80)
ctoken := "eHiSS5jXq0AAAAAAAAAAduAlRf3zXNAV8zYWtxxxxxxxxxxxxxx"
url := "https://content.dropboxapi.com/2/files/upload \"
cJSON := '{c:\tmp\pdf\CKF1907319.pdf, "mode": "add","autorename": true,"mute": false,"strict_conflict": false,}'oHTTP := CREATEOBJECT('Msxml2.ServerXMLHTTP.6.0')
oHTTP:OPEN("POST", url , .F.)
oHTTP:setRequestHeader("Authorization: Bearer " + ctoken)
oHTTP:setRequestHeader("Dropbox-API-Arg:")
oHTTP:setRequestHeader("Content-Type", "application/octet-stream")
oHTTP:SEND(cJSON)
IF oHTTP:status != 200
? oHTTP:responseText
hb_memowrit("response.txt",oHTTP:responseText)
? "Error"
ELSE
? oHTTP:responseText
hb_memowrit("response.txt",oHTTP:responseText)
ENDIF
wt = inkey(0)
returnPlease help me to solve this issuse
Thank you
Vikram
- Greg-DB6 years ago
Dropbox Community Moderator
We're happy to help with any questions or issues you might have about the Dropbox API itself, but we can't debug or write code for you, especially when you're using a client not made or supported by Dropbox (in this case, oHTTP). You'll need to refer to the Dropbox API documentation for information on what formats and parameters to use when calling the Dropbox API, and then write the code for your library/platform accordingly. I also recommend referring to the documentation for your library/platform as a reference for how to construct the HTTPS requests as needed.
Looking at your latest code though, a few more things I notice:
- Your cJSON begins with '{c:\tmp\pdf\CKF1907319.pdf,', but per the /2/files/upload interface, that should be more like: '{"path": "/CKF1907319.pdf",'. That's supposed to be the path on Dropbox where you want to put the uploaded file.
- You're not actually setting anything in the "Dropbox-API-Arg" header. That should be set with your API call parameters, which you have in cJSON.
- I don't see where you actually send the file data to upload in the request body. Perhaps that should be done in oHTTP:SEND?
- kirantara6 years agoExplorer | Level 3
Hello Sir
Could Not able to Understand what to pass the values in cJson and dropbox-Api-Arg i am getting some errors please help me to solve this issue
File Which i have to upload is c:\Tmp\Pdf\Email.pdf
and want to dropbox in Folder Names Abc2020 . how to pass both path in Cjson and Dropbox-Api-arg
This Is my code
function main()
local oHTTP,cJSON,url
setmode(25,80)
ctoken := "eHiSS5jXq0AAAAAAAAAAduAlRf3zXNAV8zYWtJ1xxxxxxxxxxxxxxxxxxxxxx"
cJSON := '{\"C:\TMP\PDF\EMAIL.PDF","mode": "add","autorename": true,"mute": false,"strict_conflict": false}'
url := 'https://content.dropboxapi.com/2/files/upload'
// cJSON := '{"path"\cPath, "mode": "add","autorename": true,"mute": false,"strict_conflict": false,}'oHTTP := CREATEOBJECT('Msxml2.ServerXMLHTTP.6.0')
oHTTP:OPEN("POST", url , .F.)
oHttp:setRequestHeader( "Authorization", "Bearer " + ctoken )
oHttp:setRequestHeader( "Dropbox-API-Arg", '{ "path": "' + cPath + '", "mode" : "add" }' )
oHttp:setRequestHeader( "Content-type", "application/octet-stream" )
oHttp:SEND( cJSON )IF oHTTP:status != 200
? oHTTP:responseText
hb_memowrit("response.txt",oHTTP:responseText)
? "Error"
ELSE
? oHTTP:responseText
hb_memowrit("response.txt",oHTTP:responseText)
ENDIF
wt = inkey(0)
returnSir My Question is what to pass in Cjson and
what to pass in Request header .
oHttp:setRequestHeader( "Dropbox-API-Arg", '{ "path": "' + cPath + '", "mode" : "add" }' )
Thanks & Regard
Vikram Chhajer
- Greg-DB6 years ago
Dropbox Community Moderator
The value you pass in the "Dropbox-API-Arg" header should be a JSON string containing the parameters you want to use for the /2/files/upload call. You can find information on each of the parameters here:
https://www.dropbox.com/developers/documentation/http/documentation#files-upload
I do recommend using a JSON library to build your JSON string instead of trying to construct it manually.
The API v2 Explorer may also be a useful tool for prototyping calls and seeing what they would look like:
https://dropbox.github.io/dropbox-api-v2-explorer/#files_upload
- kirantara6 years agoExplorer | Level 3
Thank You Sir
Cani Get Your Whatsapp number so can call You And try to understand the soultion . If Your dont Mind sir.
Thank You
Vikram
- Greg-DB6 years ago
Dropbox Community Moderator
We're not currently set up to provide API support over the phone or chat, but I'm happy to help here in the forum.
- kirantara6 years agoExplorer | Level 3
Sir
Then Please i am sorry to say that i am not able to upload the pdf file to dropbox abc FOlder please me help me to do this make changes in code which is attached here
File to Upload Email.pdf
upload to drop in folder abc folder with file name email.pdf
where to mention and how to arttach in code please change the code where necessary
**----------------------------
function main()
**----------------------------
Local oHttp, cJSON, urlUpload
setmode(25,80)
cToken := "eHiSS5jXq0AAAAAAAAAAduAlRf3zXxxxxxxxxxxxxxxxxxxxx"
urlUpload := "https://content.dropboxapi.com/2/files/upload"
// cJSON := '{c:\tmp\pdf\CKF1907319.pdf, "mode": "add","autorename": true,"mute": false,"strict_conflict": false,}'
cJson := hb_memoread("demo.hbp")
// cPath := "/HomeWork/demo.txt"
cPath := "/PMCSURAT/demo.txt"
oHttp := CREATEOBJECT('Msxml2.ServerXMLHTTP.6.0')
oHttp:OPEN("POST", urlUpload , .F.)
oHttp:setRequestHeader( "Authorization", "Bearer " + cToken )
oHttp:setRequestHeader( "Dropbox-API-Arg", '{ "path": "' + cPath + '", "mode" : "overwrite" }' )
oHttp:setRequestHeader( "Content-type", "application/octet-stream" )
oHttp:SEND(cJSON)
IF oHttp:status != 200
? oHttp:responseText
hb_memowrit("response.txt",oHttp:responseText)
? "Error"
ELSE
? oHttp:responseText
hb_memowrit("response.txt",oHttp:responseText)
ENDIF
?
wait
// wt = inkey(0)
ReturnThank you & reagards
Vikram
About Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.6,036 PostsLatest Activity: 2 hours ago
The Dropbox Community team is active from Monday to Friday. We try to respond to you as soon as we can, usually within 2 hours.
If you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X or Facebook.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!