I still need to do some testing and fiddle with a few things, but here's what I've got so far, authentication is handled in a different handler, the access token is passed as a parameter:
command dropBoxUploader pAccessToken local tMyFolder = "/Downloads" local tMyFileShortFilename = "abc.mp4" local tMyFilePath = "/Downloads/abc.mp4" local tChunkSize = 157286400 local tStep = 0 local tBytesProcessed = 0 local tOffset = 0 local tDestPath = "/somefolder/abc.mp4" local tFileDescription, tBytesRemaining, tBytesThisRead, tResult, tSession filter files(tMyFolder, "detailed") with tMyFileShortFilename & ",*" into tFileDescription put item 2 of tFileDescription into tBytesRemaining put tChunkSize into tBytesThisRead open file tMyFilePath for binary read repeat until tBytesRemaining = 0 read from file tMyFilePath for tBytesThisRead put it into tData subtract length(tData) from tBytesRemaining add 1 to tStep if tStep = 1 then dropboxUploadSessionStart pAccessToken, tData else if tBytesRemaining = 0 then dropboxUploadSessionFinish pAccessToken, tSession, tOffset, tDestPath, "add", true, false, tData else dropboxUploadSessionAppend pAccessToken, tSession, tOffset, tData end if put jsonToArray(the result) into tResult[tStep] if tResult[tStep]["error"] is not empty then exit repeat end if put tResult[1]["session_id"] into tSession add tBytesThisRead to tOffset put min(tChunkSize, tBytesRemaining) into tBytesThisRead end repeat close file tMyFilePath end dropBoxUploader JJS via use-livecode wrote > I'm not sure how this would work in your context, but one way to break > up a file into pieces is to use open / read / close like this: > > # assumes LC 9.0.2 > # tMyFolder = path of folder containing the file to upload > # tMyFileShortFilename = 'short' filename of file to upload - no > path, just the filename > # tMyFilePath = full path of file to upload > > filter files(tMyFolder, "detailed") with tMyFileShortFilename & ",*" > into tFileDescription > put item 2 of tFileDescription into tBytesRemaining > put 0 into tBytesProcessed > put 157286400 into tChunkSize -- 150 MB > put tChunkSize into tBytesThisRead > open file tMyFilePath for binary read > repeat until tBytesRemaining = 0 > read from file tMyFilePath for tBytesThisRead > subtract length(it) from tBytesRemaining > _processChunk it > put min(tChunkSize, tBytesRemaining) into tBytesThisRead > end repeat > close file tMyFilePath > > Your upload would be done in the '_processChunk' handler. > > HTH - > Phil Davis > > > On 2/18/19 5:21 AM, pink via use-livecode wrote: >> I'm getting a little closer... >> >> 1. how do I break fileContents into smaller pieces? >> 2. how do I properly calculate the pOffset value? >> >> >> Matthias Rebbe via use-livecode wrote >>> Hey pink >>> Yes, you are just going to put 150MB at a time into the pData parameter >>> and >>> ship it. >>> I have not uploaded any binary files, just encoded text files, so you >>> may >>> have to fiddle with encoding to make sure you don't get into any >>> trouble. >>> You should be able to open/read the files using >>> put url "binfile:/"&somefilename into fileContents >>> >>> On Sun, Feb 17, 2019 at 10:42 AM pink via use-livecode < >>> use-livecode@.runrev >>>> wrote: >>>> the phxDropbox library is for v1 of the Dropbox API, which has been >>>> deprecated >>>> >>>> what I need is to get a handle of the upload session commands, how do I >>>> properly break the file data into seperate sessions, and how do i >>>> determine >>>> the offset value >>>> >>>> >>>> Matthias Rebbe via use-livecode wrote >>>>> Don't know if this works anymore but before i used this: >>>>> >>>>> >>>>> *on*openstack >>>>> >>>>> *if* thereisnotastack"phxDropboxLib"*then* >>>>> >>>>> *put*GetPathToFile("phxDropboxLib.livecode") intophxLib >>>>> >>>>> *start*usingstackphxLib >>>>> >>>>> *else* *if* "phxDropboxLib"isnotamongthelinesofthestacksinuse*then* >>>>> >>>>> *start*usingstack"phxDropboxLib" >>>>> >>>>> *end* *if* >>>>> >>>>> *--* >>>>> >>>>> *if* "phxDropboxLib"isnotamongthelinesofthestacksinuse*then* >>>>> >>>>> *answer*error"Unable to load phxDropboxLib" >>>>> >>>>> *quit* >>>>> >>>>> *end* *if* >>>>> >>>>> *constant*myAppKey = "appappappapp" >>>>> >>>>> *constant*myAppSec = "secsecsec" >>>>> >>>>> *constant*myTokKey = "toktoktoktok" >>>>> >>>>> *constant*myTokSec = "sectoksectok" >>>>> >>>>> *--* >>>>> >>>>> *if* notphx_DropboxAvailable() *then* >>>>> >>>>> *answer*"Dropbox HTTPS connection NOT available" >>>>> >>>>> *end* *if* >>>>> >>>>> *get*phx_DropboxInitLib(myAppKey, myAppSec, myTokKey, myTokSec) >>>>> >>>>> end openCard >>>>> >>>>> ----reading---- >>>>> >>>>> *put*phx_DropboxReadFile("sandbox", ("/folder/some.txt")) >>>>> intoField"Name1"ofcard1 >>>>> >>>>> ----writing------ >>>>> >>>>> *put*phx_DropboxWriteFile("sandbox", ("/folder/some.txt"), >>>>> "text/html", >>>>> true, myName) intofield"udontcme"ofcard1 >>>>> >>>>> ------close----------- >>>>> >>>>> *on*closeStack >>>>> >>>>> *set*theuTokenKey ofthisstacktoempty >>>>> >>>>> *set*theuTokenSec ofthisstacktoempty >>>>> >>>>> *stop*usingstack"phxDropboxLib" >>>>> >>>>> *close*stack"phxDropboxLib" >>>>> >>>>> *pass*closeStack >>>>> >>>>> *end*closeStack >>>>> >>>>> Op 16-2-2019 om 00:23 schreef pink via use-livecode: >>>>>> under the documentation for dropboxUpload, it states it shouldn't be >>>>>> used >>>>>> for files larger than 150MB, the video files will all be around 800MB >>>>>> >>>>>> I've been looking through the stack, but cannot find the answers I am >>>>>> looking for. SO I am still not clear how I should get my file into >>>> pData >>>>>> and pData is just a chunk of the data? How do I make that chunk out >>>>>> of >>>>>> the >>>>>> whole and where do I get pOffset from? >>>>>> >>>>>> >>>>>> Matthias Rebbe via use-livecode wrote >>>>>>> Hey, pink, thanks for the clarification. >>>>>>> First of all, is there a reason why you are doing it this way >>>>>>> instead >>>> of >>>>>>> using dropboxUpload? If you use dropboxUpload you can do it all in >>>> one >>>>>>> shot. >>>>>>> Gerard's stack explains the process and how to use the various >>>> commands >>>>>>> Doing it the way you are doing it, you would start with sessionStart >>>> and >>>>>>> then you would repeatedly call sessionAppend >>>>>>> pOffset is the length of what you have already sent because there >>>>>>> are >>>> no >>>>>>> guarantees that dropbox will get your file stream in order, so if it >>>>>>> gets >>>>>>> them out of order and pData isn't the same length for each call to >>>>>>> append, >>>>>>> the only way dropbox knows where to put the data it just received is >>>> if >>>>>>> you >>>>>>> tell it where to put it. >>>>>>> pData should be at most 150mb per call. >>>>>>> _______________________________________________ >>>>>>> use-livecode mailing list >>>>>>> use-livecode@.runrev >>>>>>> Please visit this url to subscribe, unsubscribe and manage your >>>>>>> subscription preferences: >>>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode >>>>>> >>>>>> >>>>>> >>>>>> ----- >>>>>> --- >>>>>> Greg (pink) Miller >>>>>> mad, pink and dangerous to code >>>>>> -- >>>>>> Sent from: >>>>>> >>>> http://runtime-revolution.278305.n4.nabble.com/Revolution-User-f278306.html >>>>>> _______________________________________________ >>>>>> use-livecode mailing list >>>>>> >>>>> use-livecode@.runrev >>>>>> Please visit this url to subscribe, unsubscribe and manage your >>>>>> subscription preferences: >>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode >>>>> _______________________________________________ >>>>> use-livecode mailing list >>>>> use-livecode@.runrev >>>>> Please visit this url to subscribe, unsubscribe and manage your >>>>> subscription preferences: >>>>> http://lists.runrev.com/mailman/listinfo/use-livecode >>>> >>>> >>>> >>>> >>>> ----- >>>> --- >>>> Greg (pink) Miller >>>> mad, pink and dangerous to code >>>> -- >>>> Sent from: >>>> http://runtime-revolution.278305.n4.nabble.com/Revolution-User-f278306.html >>>> >>>> _______________________________________________ >>>> use-livecode mailing list >>>> >>> use-livecode@.runrev >>>> Please visit this url to subscribe, unsubscribe and manage your >>>> subscription preferences: >>>> http://lists.runrev.com/mailman/listinfo/use-livecode >>>> >>> >>> -- >>> On the first day, God created the heavens and the Earth >>> On the second day, God created the oceans. >>> On the third day, God put the animals on hold for a few hours, >>> and did a little diving. >>> And God said, "This is good." >>> _______________________________________________ >>> use-livecode mailing list >>> use-livecode@.runrev >>> Please visit this url to subscribe, unsubscribe and manage your >>> subscription preferences: >>> http://lists.runrev.com/mailman/listinfo/use-livecode >> >> >> >> >> ----- >> --- >> Greg (pink) Miller >> mad, pink and dangerous to code >> -- >> Sent from: >> http://runtime-revolution.278305.n4.nabble.com/Revolution-User-f278306.html >> >> _______________________________________________ >> use-livecode mailing list >> > use-livecode@.runrev >> Please visit this url to subscribe, unsubscribe and manage your >> subscription preferences: >> http://lists.runrev.com/mailman/listinfo/use-livecode >> >> > > -- > Phil Davis > > _______________________________________________ > use-livecode mailing list > use-livecode@.runrev > Please visit this url to subscribe, unsubscribe and manage your > subscription preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode ----- --- Greg (pink) Miller mad, pink and dangerous to code -- Sent from: http://runtime-revolution.278305.n4.nabble.com/Revolution-User-f278306.html _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode