<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Swift API v2  Example of uploading a file using filesUploadSession(Start, Append, Finish) in Dropbox API Support &amp; Feedback</title>
    <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Swift-API-v2-Example-of-uploading-a-file-using/m-p/151873#M5035</link>
    <description>&lt;P&gt;I don't think we have a full sample using that published, but here's a very simple example I just put together: (apologies for the atrocious code formatting on the forum)&lt;/P&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// Write a file to the local documents directory&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p2"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; text = &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;"Hello world. Usually something much longer here."&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; filename = &lt;/SPAN&gt;&lt;SPAN class="s4"&gt;"working-draft.txt"&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p4"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; localDir = &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;NSSearchPathForDirectoriesInDomains&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(.&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;DocumentDirectory&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;, .UserDomainMask, &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;true&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;)[&lt;/SPAN&gt;&lt;SPAN class="s5"&gt;0&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;] &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;as&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;String&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; localPath = localDir.&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;stringByAppendingString&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(filename)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;try&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;! text.&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;writeToFile&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(localPath, atomically:&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;true&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, encoding:&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;NSUTF8StringEncoding&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p5"&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; fileURL = &lt;/SPAN&gt;&lt;SPAN class="s6"&gt;NSURL&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;.&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;fileURLWithPath&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(localPath)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p4"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; fileLength = &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;UInt64&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(text.&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;lengthOfBytesUsingEncoding&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;NSUTF8StringEncoding&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;))&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(fileURL)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(fileLength)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p5"&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// start the upload session, passing along the NSURL to the whole file in this case, since it's small&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// there are also versions that take NSData or NSInputStream as the body&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;client.&lt;/SPAN&gt;&lt;SPAN class="s7"&gt;filesUploadSessionStart&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(body: fileURL).&lt;/SPAN&gt;&lt;SPAN class="s7"&gt;response&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; { response, error &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;in&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;if&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; result = response {&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// the call succeeded&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(result)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p5"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// also call filesUploadSessionAppend to add more data if/as necessary, as many times as necessary (be sure to track the offset)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p5"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// we're ready to finish the upload and commit the file&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;client.&lt;/SPAN&gt;&lt;SPAN class="s7"&gt;filesUploadSessionFinish&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(cursor: &lt;/SPAN&gt;&lt;SPAN class="s7"&gt;Files&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;.&lt;/SPAN&gt;&lt;SPAN class="s7"&gt;UploadSessionCursor&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(sessionId: result.&lt;/SPAN&gt;&lt;SPAN class="s7"&gt;sessionId&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, offset: fileLength),&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;commit: &lt;/SPAN&gt;&lt;SPAN class="s7"&gt;Files&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;.&lt;/SPAN&gt;&lt;SPAN class="s7"&gt;CommitInfo&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(path: &lt;/SPAN&gt;&lt;SPAN class="s4"&gt;"/test_swift_upload_session.txt"&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;),&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// no additional data to add at this point in this case&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;body:&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;NSData&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;()).&lt;/SPAN&gt;&lt;SPAN class="s7"&gt;response&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; { response, error &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;in&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;if&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; result = response {&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(result)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;} &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;else&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; {&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(error!)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p5"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;} &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;else&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; {&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// the call failed&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(error!)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;</description>
    <pubDate>Fri, 13 Nov 2015 08:53:13 GMT</pubDate>
    <dc:creator>Greg-DB</dc:creator>
    <dc:date>2015-11-13T08:53:13Z</dc:date>
    <item>
      <title>Swift API v2  Example of uploading a file using filesUploadSession(Start, Append, Finish)</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Swift-API-v2-Example-of-uploading-a-file-using/m-p/151872#M5034</link>
      <description>&lt;P&gt;I have used the OSX interface in the past for chunked file uploads to support large files. I can not quite figure out the process with the Swift API.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Test cases for the API would be great, they would provide examples of usage.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the absence ... do you have any code examples that you can share.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 29 May 2019 09:38:35 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Swift-API-v2-Example-of-uploading-a-file-using/m-p/151872#M5034</guid>
      <dc:creator>RTS S.</dc:creator>
      <dc:date>2019-05-29T09:38:35Z</dc:date>
    </item>
    <item>
      <title>Re: Swift API v2  Example of uploading a file using filesUploadSession(Start, Append, Finish)</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Swift-API-v2-Example-of-uploading-a-file-using/m-p/151873#M5035</link>
      <description>&lt;P&gt;I don't think we have a full sample using that published, but here's a very simple example I just put together: (apologies for the atrocious code formatting on the forum)&lt;/P&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// Write a file to the local documents directory&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p2"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; text = &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;"Hello world. Usually something much longer here."&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; filename = &lt;/SPAN&gt;&lt;SPAN class="s4"&gt;"working-draft.txt"&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p4"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; localDir = &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;NSSearchPathForDirectoriesInDomains&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(.&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;DocumentDirectory&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;, .UserDomainMask, &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;true&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;)[&lt;/SPAN&gt;&lt;SPAN class="s5"&gt;0&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;] &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;as&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;String&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; localPath = localDir.&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;stringByAppendingString&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(filename)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;try&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;! text.&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;writeToFile&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(localPath, atomically:&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;true&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, encoding:&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;NSUTF8StringEncoding&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p5"&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; fileURL = &lt;/SPAN&gt;&lt;SPAN class="s6"&gt;NSURL&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;.&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;fileURLWithPath&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(localPath)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p4"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s1"&gt; fileLength = &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;UInt64&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(text.&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;lengthOfBytesUsingEncoding&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;NSUTF8StringEncoding&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;))&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(fileURL)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(fileLength)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p5"&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// start the upload session, passing along the NSURL to the whole file in this case, since it's small&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// there are also versions that take NSData or NSInputStream as the body&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;client.&lt;/SPAN&gt;&lt;SPAN class="s7"&gt;filesUploadSessionStart&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(body: fileURL).&lt;/SPAN&gt;&lt;SPAN class="s7"&gt;response&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; { response, error &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;in&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;if&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; result = response {&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// the call succeeded&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(result)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p5"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// also call filesUploadSessionAppend to add more data if/as necessary, as many times as necessary (be sure to track the offset)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p5"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// we're ready to finish the upload and commit the file&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;client.&lt;/SPAN&gt;&lt;SPAN class="s7"&gt;filesUploadSessionFinish&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(cursor: &lt;/SPAN&gt;&lt;SPAN class="s7"&gt;Files&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;.&lt;/SPAN&gt;&lt;SPAN class="s7"&gt;UploadSessionCursor&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(sessionId: result.&lt;/SPAN&gt;&lt;SPAN class="s7"&gt;sessionId&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, offset: fileLength),&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;commit: &lt;/SPAN&gt;&lt;SPAN class="s7"&gt;Files&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;.&lt;/SPAN&gt;&lt;SPAN class="s7"&gt;CommitInfo&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(path: &lt;/SPAN&gt;&lt;SPAN class="s4"&gt;"/test_swift_upload_session.txt"&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;),&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// no additional data to add at this point in this case&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;body:&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;NSData&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;()).&lt;/SPAN&gt;&lt;SPAN class="s7"&gt;response&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; { response, error &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;in&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;if&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;let&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; result = response {&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(result)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;} &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;else&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; {&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(error!)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p5"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;} &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;else&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; {&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;// the call failed&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;(error!)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="p3"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 13 Nov 2015 08:53:13 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Swift-API-v2-Example-of-uploading-a-file-using/m-p/151873#M5035</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2015-11-13T08:53:13Z</dc:date>
    </item>
    <item>
      <title>Re: Swift API v2  Example of uploading a file using filesUploadSession(Start, Append, Finish)</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Swift-API-v2-Example-of-uploading-a-file-using/m-p/151874#M5036</link>
      <description>&lt;P&gt;If I try to load a 1GB files with a Stream input &amp;nbsp;using &amp;nbsp;filesUploadSessionStart &amp;nbsp;will the file get completely uploaded by the time it calls the response ?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If not how do I find how much was transferred so I know where to start with subsequent filesUploadSessionAppend ... that's the part I am missing.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 14 Nov 2015 05:35:17 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Swift-API-v2-Example-of-uploading-a-file-using/m-p/151874#M5036</guid>
      <dc:creator>RTS S.</dc:creator>
      <dc:date>2015-11-14T05:35:17Z</dc:date>
    </item>
    <item>
      <title>Re: Swift API v2  Example of uploading a file using filesUploadSession(Start, Append, Finish)</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Swift-API-v2-Example-of-uploading-a-file-using/m-p/151875#M5037</link>
      <description>&lt;P&gt;Each call to&amp;nbsp;filesUploadSessionStart,&amp;nbsp;filesUploadSessionAppend, or&amp;nbsp;filesUploadSessionFinish uploads all of the data you give to it.&amp;nbsp;So in your case, if you supply 1 GB, it will attempt to upload all of that data at once, before response is called. That will likely fail though, so you should instead only upload a piece at a time. E.g., you could use chunks of 4 MB, where you supply 4 MB to start, another 4 MB to append repeatedly as necessary, and then the remainder to finish.&lt;/P&gt;</description>
      <pubDate>Sat, 14 Nov 2015 05:58:40 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Swift-API-v2-Example-of-uploading-a-file-using/m-p/151875#M5037</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2015-11-14T05:58:40Z</dc:date>
    </item>
    <item>
      <title>Re: Swift API v2  Example of uploading a file using filesUploadSession(Start, Append, Finish)</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Swift-API-v2-Example-of-uploading-a-file-using/m-p/151876#M5038</link>
      <description>&lt;P&gt;Is there a reason why filesUploadSessionAppend takes an offset and Session ID&amp;nbsp;and filesUploadSessionFinish takes a Files.UploadSessionCursor which wraps the Offset and Session ID ?&lt;/P&gt;
&lt;P&gt;Seems like these calls should hava a similar calling convention except that SessionFinsish should have the extra &amp;nbsp;CommitInfo&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Actually I think the API would be cleaner with a smple&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;SessionStart -- NO Data just return the SessonID&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;SessionAppend &amp;nbsp; Args would be SessionID, Data, and Offset&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;SessionFinish &amp;nbsp; &amp;nbsp; Args would be SessionID and Completion&lt;/P&gt;
&lt;P&gt;Adding a data transfer to the SessionStart and SessionFinish makes the interface much more clunky ... and all you have saved is possibly one small packet transfer. You Currently need minimally 2 requests (Start and Finish), one can be small. With a cleaner interface you would need minimally 3 requests, two are small.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 14 Nov 2015 10:29:36 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Swift-API-v2-Example-of-uploading-a-file-using/m-p/151876#M5038</guid>
      <dc:creator>RTS S.</dc:creator>
      <dc:date>2015-11-14T10:29:36Z</dc:date>
    </item>
    <item>
      <title>Re: Swift API v2  Example of uploading a file using filesUploadSession(Start, Append, Finish)</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Swift-API-v2-Example-of-uploading-a-file-using/m-p/151877#M5039</link>
      <description>&lt;P&gt;Thanks for the feedback! I don't know off hand why append and finish are different, but I'll be sure to pass this along.&lt;/P&gt;</description>
      <pubDate>Sun, 15 Nov 2015 02:48:46 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Swift-API-v2-Example-of-uploading-a-file-using/m-p/151877#M5039</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2015-11-15T02:48:46Z</dc:date>
    </item>
  </channel>
</rss>

