Visual FoxPro
Visual FoxPro
OneDrive -- Upload Binary Data from Memory
See more OneDrive Examples
Demonstrates how to upload binary data directly from memory to the signed-in user's OneDrive. This uses OneDrive's simple upload API to upload in a single API call, which only supports uploads up to 4MB in size. (See the other example(s) for uploading larger files.)Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loJson
LOCAL loHttp
LOCAL loPdfBytes
LOCAL loReq
LOCAL loResp
lnSuccess = 0
* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
* This example uses the OAuth client credentials flow.
* See How to Create an Azure App Registration for OAuth 2.0 Client Credentials
* Use your client ID, client secret, and tenant ID in the following lines
loJson = CreateObject('Chilkat.JsonObject')
loJson.UpdateString("client_id","2871da2c-8176-4b7f-869b-2311aa82e743")
loJson.UpdateString("client_secret","2hu9Q~r5QuryUcEkNbg1btLtnfU1VUXzhSCG6brH")
loJson.UpdateString("scope","https://graph.microsoft.com/.default")
loJson.UpdateString("token_endpoint","https://login.microsoftonline.com/114d7ed6-71bf-4dbe-a866-748364121bf2/oauth2/v2.0/token")
loHttp = CreateObject('Chilkat.Http')
loHttp.AuthToken = loJson.Emit()
* First, let's download a PDF from the web directly into memory. Then upload the PDF
* to OneDrive.
loPdfBytes = CreateObject('Chilkat.BinData')
lnSuccess = loHttp.QuickGetBd("https://www.chilkatsoft.com/data/pdf/sample.pdf",loPdfBytes)
IF (lnSuccess = 0) THEN
? loHttp.LastErrorText
RELEASE loJson
RELEASE loHttp
RELEASE loPdfBytes
CANCEL
ENDIF
* Upload the PDF to our OneDrive to /TestDir/sample.pdf
loReq = CreateObject('Chilkat.HttpRequest')
loReq.HttpVerb = "PUT"
* Use your actual user-id instead of "4fe732c3-322e-4a6b-b729-2fd1eb5c6104"
loReq.Path = "/v1.0/users/4fe732c3-322e-4a6b-b729-2fd1eb5c6104/drive/root:/TestDir/sample.pdf:/content"
loReq.LoadBodyFromBd(loPdfBytes)
* If you're uploading a file and don't know what the Content-Type should be,
* just use "application/octet-stream".
loReq.ContentType = "application/pdf"
loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpSReq("graph.microsoft.com",443,1,loReq,loResp)
IF (lnSuccess = 0) THEN
? loHttp.LastErrorText
RELEASE loJson
RELEASE loHttp
RELEASE loPdfBytes
RELEASE loReq
RELEASE loResp
CANCEL
ENDIF
* If successful, a 201 status code is returned, with the driveItem object in the response body for the newly created file.
loJson.EmitCompact = 0
loJson.Load(loResp.BodyStr)
IF (loResp.StatusCode <> 201) THEN
? loJson.Emit()
? "Response status = " + STR(loResp.StatusCode)
RELEASE loJson
RELEASE loHttp
RELEASE loPdfBytes
RELEASE loReq
RELEASE loResp
CANCEL
ENDIF
* Success. Examine the driveItem JSON object:
? loJson.Emit()
? "-- Success --"
* Here is a sample successful response:
* {
* "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('me')/drive/root/$entity",
* "@microsoft.graph.downloadUrl": "https://s5ucmg.dm2301.livefilestore.com/y4ppZYP8kjqVleyrDvphxvO8vSRxNRcYn75t5K6gNARH1cDMI3CBH3XvZ7nNHJoKMg7lQo41XLaaYiQDw1EdRg9QNTv_rtDXOnUwaipJfJyTlNXh6WOljIXOm1R2fHDk2tDq_9C9gB-prnN2NxhnXZw08YQyTnpHZXIz1w9xBxqkPn0tzF-aQSldx5e15t93Ftd1AqigReYgpF1gXtIISQs7hk2JRAYhW2d84HxEuqDXdw",
* "createdBy": {
* "application": {
* "displayName": "Chilkat",
* "id": "441c9990"
* },
* "user": {
* "displayName": "Matt Smith",
* "id": "3a33fceb9b74cc15"
* }
* },
* "createdDateTime": "2017-06-03T18:18:17.7Z",
* "cTag": "aYzozQTMzRkNFQjlCNzRDQzE1ITQ4NjcuMjU3",
* "eTag": "aM0EzM0ZDRUI5Qjc0Q0MxNSE0ODY3LjA",
* "id": "3A33FCEB9B74CC15!4867",
* "lastModifiedBy": {
* "application": {
* "displayName": "Chilkat",
* "id": "441c9990"
* },
* "user": {
* "displayName": "Matt Smith",
* "id": "3a33fceb9b74cc15"
* }
* },
* "lastModifiedDateTime": "2017-06-03T18:18:17.7Z",
* "name": "sample.pdf",
* "parentReference": {
* "driveId": "3a33fceb9b74cc15",
* "id": "3A33FCEB9B74CC15!4862",
* "name": "someFolder",
* "path": "/drive/root:/someFolder"
* },
* "size": 178399,
* "webUrl": "https://1drv.ms/b/s!ABXMdJvr_DM6pgM",
* "file": {
* "hashes": {
* "sha1Hash": "1456955C84C2DAC9DA613DC80E3017533BDC368A"
* },
* "mimeType": "application/pdf"
* },
* "fileSystemInfo": {
* "createdDateTime": "2017-06-03T18:18:17.7Z",
* "lastModifiedDateTime": "2017-06-03T18:18:17.7Z"
* }
* }
RELEASE loJson
RELEASE loHttp
RELEASE loPdfBytes
RELEASE loReq
RELEASE loResp