<?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: Uploading big file using Objective-C API V2 very SLOW... in Dropbox API Support &amp; Feedback</title>
    <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203549#M9733</link>
    <description>&lt;P&gt;Thanks! That's helpful&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A few notes:&lt;/P&gt;
&lt;P&gt;- I misunderstood what was being logged in your original post, and testing the code I can confirm the issue isn't the chunk size being 32768. That's the&amp;nbsp;progress callback is showing incremental progress within each single chunk upload call. Your chunk size is working at&amp;nbsp;5 MB.&lt;/P&gt;
&lt;P&gt;- In your latest code though, note that the comment is wrong. The actual code sets a 5 MB chunk size, but the comment indicates 100 MB.&lt;/P&gt;
&lt;P&gt;- Testing this code, I have a better idea of where the overhead is. We're looking into it and I'll follow up here once I have more information.&lt;/P&gt;</description>
    <pubDate>Tue, 24 Jan 2017 04:38:15 GMT</pubDate>
    <dc:creator>Greg-DB</dc:creator>
    <dc:date>2017-01-24T04:38:15Z</dc:date>
    <item>
      <title>Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203029#M9676</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;recently our app updates the Dropbox related code from API V1 to API V2. Usually we need to transfer files to Dropbox, it is OK for small files, but for video files of size about 1.5 GB the progress is very slow, and often&amp;nbsp;the upload is stopped due to request timeout....&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;We use the following API calls:&lt;/P&gt;&lt;P&gt;1. Start the upload&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;[client.&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;filesRoutes&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;uploadSessionStartData&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;:data];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;2. Repeatedly upload new chunk of data&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;[client.&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;filesRoutes&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;uploadSessionAppendV2Data&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;:cursor &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;inputData&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;:chunk];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;3. Finish upload for the last chunk&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;[client.&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;filesRoutes&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;uploadSessionFinishData&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;:cursor &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;commit&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;:info &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;inputData&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;:chunk];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;And the log messages are as follows:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:25:11.336692 MyApp[19184:6471639] start: bytesWritten = 32768 progress = 0.0000&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:25:11.343177&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0000&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:25:11.349521&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0001&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:25:11.353344&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0001&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;// Skip...&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:25:55.059215&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0003&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:25:55.070222&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0003&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:26:17.700571&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 65536 progress = 0.0003&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:26:17.704239&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0003&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:26:34.987083&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0004&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:26:34.992280&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0004&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:26:35.005880&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0004&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;// No data downloaded for about 23 sec&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:26:58.848907&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0004&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:26:58.855699&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0004&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:26:58.871372&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0005&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:26:58.873328&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0005&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:27:15.431969&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 65536 progress = 0.0005&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:27:15.436307&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0006&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:27:44.313052&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0006&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:27:44.318937&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0006&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:27:44.323024&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0006&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:27:44.327415&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0006&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:28:10.012220&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 65536 progress = 0.0007&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:28:10.015194&amp;nbsp;&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] start: bytesWritten = 32768 progress = 0.0007&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN&gt;// Skip...&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:59:18.994143&amp;nbsp;&lt;STRONG&gt;MyApp&lt;/STRONG&gt;[19184:6471639] __70-[....]_block_invoke [Line 92] start: requestError = DropboxClientError[{&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;NSError = "Error Domain=NSURLErrorDomain Code=-1001 \"\U8981\U6c42\U903e\U6642\U3002\" UserInfo={NSUnderlyingError=0x17025bb70 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 \"(null)\" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=&lt;A href="https://api-content.dropbox.com/2/files/upload_session/start" target="_blank"&gt;https://api-content.dropbox.com/2/files/upload_session/start&lt;/A&gt;, NSErrorFailingURLKey=&lt;A href="https://api-content.dropbox.com/2/files/upload_session/start" target="_blank"&gt;https://api-content.dropbox.com/2/files/upload_session/start&lt;/A&gt;, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=\U8981\U6c42\U903e\U6642\U3002}";&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;}];&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:59:18.994833&amp;nbsp;&lt;STRONG&gt;&lt;STRONG&gt;MyApp&lt;/STRONG&gt;&lt;/STRONG&gt;[19184:6471639] __74-[...]_block_invoke_2 [Line 428] Failed To Upload /Horrible.Bosses.2011.DVDRip.XVID.AC3.HQ.Hive-CM8.avi&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;Error = DBRequestErrorClient&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2017-01-20 14:59:18.995478&amp;nbsp;&lt;STRONG&gt;&lt;STRONG&gt;MyApp&lt;/STRONG&gt;&lt;/STRONG&gt;[19184:6475977] [] __tcp_connection_write_eof_block_invoke Write close callback received error: [89] Operation canceled&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;It can be seen from the log messages that&amp;nbsp;the time the data arrived is not very smooth,&amp;nbsp;and finally the operation is canceld.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;My questions:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;Is it pure network traffic problem?(Our network is relatively fast.)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;Or is there something in API V2's upload API that causes the upload so slow?&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;Thanks for your attention.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;Best regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;Logan&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 29 May 2019 09:26:34 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203029#M9676</guid>
      <dc:creator>C. Logan</dc:creator>
      <dc:date>2019-05-29T09:26:34Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203114#M9682</link>
      <description>&lt;P&gt;Hi Logan, are you using a chunk size of&amp;nbsp;32768 bytes? You should probably use something much larger than that, at least 4 MB, or even significantly larger than that.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The optimal size depends on a variety of factors, so you may want to try a few different ones and see what works best for your app.&amp;nbsp;Using a small chunk size can be useful, as it minimizes how much data you need to re-upload for failed requests, and reduces the chance of any particular request of failing, but it causes more overhead. A larger chunk size&amp;nbsp;can reduce the overhead, which can improve overall transfer speed.&lt;/P&gt;</description>
      <pubDate>Fri, 20 Jan 2017 18:15:17 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203114#M9682</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2017-01-20T18:15:17Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203187#M9703</link>
      <description>Hi Greg,&lt;BR /&gt;&lt;BR /&gt;thanks for reply!&lt;BR /&gt;&lt;BR /&gt;1. I have tried to pass the chunk of data with size 5 MB and 100 MB, but the result was the same. It seems that the bytesWritten from the progress block is always 32768 and in few cases also 65536, as shown in the log message. How can I modify the data chunk size for each transfer? Currently I use the following code:&lt;BR /&gt;&lt;BR /&gt;NSData *data = [dropboxObj.fileHandle readDataOfLength:length]; // length = 5 MB or 100 MB or other values&lt;BR /&gt;uploadTask = [client.filesRoutes uploadSessionStartData:data];&lt;BR /&gt;&lt;BR /&gt;2. Just a few minutes ago I tried to upload again, but there is no message from the progress block, and after one or two minutes the operation is canceled. My network is normal. So I guess there might be something wrong with the connection to Dropbox, or is there still anything in API V2 that I should know&lt;BR /&gt;when doing the upload ?&lt;BR /&gt;&lt;BR /&gt;Thanks for your attention!&lt;BR /&gt;&lt;BR /&gt;Logan</description>
      <pubDate>Sat, 21 Jan 2017 05:16:23 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203187#M9703</guid>
      <dc:creator>C. Logan</dc:creator>
      <dc:date>2017-01-21T05:16:23Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203350#M9707</link>
      <description>&lt;P&gt;1. The chunk size should just be the size of the data you supply for any given call, and that's what should get reported back in the progress callback, so it's unexpected that you'd still get&amp;nbsp;32768. Can you share the rest of the relevant code, including the definition of length, the progresc callback definitifion, etc.?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2. That also doesn't sound like the expected behavior. If you share the rest of the code and the steps to reproduce it we'll be happy to look into it.&lt;/P&gt;</description>
      <pubDate>Sun, 22 Jan 2017 19:24:34 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203350#M9707</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2017-01-22T19:24:34Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203390#M9709</link>
      <description>&lt;P&gt;// My code can be summarized as follows:&lt;/P&gt;&lt;P&gt;// sorry for the indentation, it seems the code indentation is gone.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;const NSUInteger DB_CHUNK_SIZE = 5*1024*1024;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;DropboxClient *client = [DropboxClientsManager authorizedClient];&lt;BR /&gt;&lt;BR /&gt;// create dropboxObj to pass parameters&lt;BR /&gt;TGDropboxObject *dropboxObj = [[TGDropboxObject alloc] init];&lt;BR /&gt;dropboxObj.progressBlock = progress;&lt;BR /&gt;dropboxObj.completionBlock = completion;&lt;BR /&gt;dropboxObj.fileSize = [self getFileSize:localPath fromInternal:fromInternal];&lt;BR /&gt;dropboxObj.chunkSize = DB_CHUNK_SIZE;&lt;BR /&gt;dropboxObj.curTotalBytes = 0;&lt;BR /&gt;dropboxObj.srcPath = localPath;&lt;BR /&gt;dropboxObj.dstPath = remotePath;&lt;BR /&gt;dropboxObj.fromInternal = fromInternal;&lt;BR /&gt;if (fromInternal) {&lt;BR /&gt;dropboxObj.fileHandle = [NSFileHandle fileHandleForReadingAtPath:localPath];&lt;BR /&gt;}&lt;BR /&gt;// skip……&lt;/P&gt;&lt;P&gt;NSData *data = [self readDataOfLength:dropboxObj.chunkSize fromObj:dropboxObj];// read one chunk of data&lt;BR /&gt;&lt;BR /&gt;DBUploadTask&amp;lt;DBFILESUploadSessionStartResult *, DBNilObject *&amp;gt; *uploadTask;&lt;BR /&gt;&lt;BR /&gt;uploadTask = [client.filesRoutes uploadSessionStartData:data];&lt;BR /&gt;[uploadTask response:^(DBFILESUploadSessionStartResult * _Nullable result, DBNilObject * _Nullable obj, DBRequestError * _Nullable requestError) {&lt;BR /&gt;&lt;BR /&gt;if (result) { // success for the first chunk&lt;BR /&gt;dropboxObj.sessionId = result.sessionId;&lt;BR /&gt;&lt;BR /&gt;DBFILESUploadSessionCursor *cursor = [[DBFILESUploadSessionCursor alloc] initWithSessionId:result.sessionId offset:[NSNumber numberWithUnsignedLongLong:[self getOffsetFromObj:dropboxObj]]];&lt;BR /&gt;&lt;BR /&gt;[self uploadNextFromObj:dropboxObj cursor:cursor];// do upload for subsequent chunks&lt;BR /&gt;}&lt;BR /&gt;else { // failure&lt;BR /&gt;[self closeFileFromObj:dropboxObj];&lt;/P&gt;&lt;P&gt;// skip…&lt;/P&gt;&lt;P&gt;dropboxObj.completionBlock(nil, error);&lt;BR /&gt;}&lt;BR /&gt;}];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// progress block for&amp;nbsp;&lt;SPAN&gt;uploadTask&lt;/SPAN&gt;&lt;BR /&gt;[uploadTask progress:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {&lt;BR /&gt;dropboxObj.curTotalBytes += bytesWritten;&lt;BR /&gt;CGFloat progress = (CGFloat)dropboxObj.curTotalBytes / (CGFloat)dropboxObj.fileSize;&lt;BR /&gt;NSLog(@"start: bytesWritten = %lld progress = %.4f", bytesWritten, progress);&lt;BR /&gt;dropboxObj.progressBlock(progress);&lt;BR /&gt;}];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// The method for uploading subsequent chunks:&lt;/P&gt;&lt;P&gt;//-------------------------------------------------------&lt;BR /&gt;- (void)uploadNextFromObj:(TGDropboxObject *)dropboxObj cursor:(DBFILESUploadSessionCursor *)cursor {&lt;BR /&gt;&lt;BR /&gt;DropboxClient *client = [DropboxClientsManager authorizedClient];&lt;BR /&gt;NSData *const chunk = [self readDataOfLength:dropboxObj.chunkSize fromObj:dropboxObj];&lt;BR /&gt;const BOOL isLastChunk = chunk.length &amp;lt; dropboxObj.chunkSize;&lt;BR /&gt;&lt;BR /&gt;if (isLastChunk == NO) {&lt;BR /&gt;DBUploadTask&amp;lt;DBNilObject *, DBFILESUploadSessionLookupError *&amp;gt; *continueTask;&lt;BR /&gt;&lt;BR /&gt;continueTask = [client.filesRoutes uploadSessionAppendV2Data:cursor inputData:chunk];&lt;BR /&gt;[continueTask response:^(DBNilObject * _Nullable obj, DBFILESUploadSessionLookupError * _Nullable lookupError, DBRequestError * _Nullable requestError) {&lt;BR /&gt;&lt;BR /&gt;if (lookupError == nil) { // success&lt;BR /&gt;DBFILESUploadSessionCursor *cursor = [[DBFILESUploadSessionCursor alloc] initWithSessionId:dropboxObj.sessionId offset:[NSNumber numberWithUnsignedLongLong:[self getOffsetFromObj:dropboxObj]]];&lt;BR /&gt;&lt;BR /&gt;[self uploadNextFromObj:dropboxObj cursor:cursor];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;} else { // failure&lt;BR /&gt;[self closeFileFromObj:dropboxObj];&lt;BR /&gt;&lt;BR /&gt;// skip…&lt;/P&gt;&lt;P&gt;dropboxObj.completionBlock(nil, error);&lt;BR /&gt;}&lt;BR /&gt;}];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// progress block for &lt;SPAN&gt;continueTask&lt;/SPAN&gt;&lt;BR /&gt;[continueTask progress:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {&lt;BR /&gt;dropboxObj.curTotalBytes += bytesWritten;&lt;BR /&gt;CGFloat progress = (CGFloat)dropboxObj.curTotalBytes / (CGFloat)dropboxObj.fileSize;&lt;BR /&gt;NSLog(@"continue: bytesWritten = %lld progress = %.4f", bytesWritten, progress);&lt;BR /&gt;dropboxObj.progressBlock(progress);&lt;BR /&gt;}];&lt;BR /&gt;}&lt;BR /&gt;else { // last chunk&lt;BR /&gt;DBUploadTask&amp;lt;DBFILESFileMetadata *, DBFILESUploadSessionFinishError *&amp;gt; *finishTask;&lt;BR /&gt;DBFILESCommitInfo *info = [[DBFILESCommitInfo alloc] initWithPath:dropboxObj.dstPath];&lt;BR /&gt;&lt;BR /&gt;finishTask = [client.filesRoutes uploadSessionFinishData:cursor commit:info inputData:chunk];&lt;BR /&gt;[finishTask response:^(DBFILESFileMetadata * _Nullable metaData, DBFILESUploadSessionFinishError * _Nullable finishError, DBRequestError * _Nullable requestError) {&lt;BR /&gt;DLog(@"metaData: %@", metaData);&lt;BR /&gt;[self closeFileFromObj:dropboxObj];&lt;BR /&gt;&lt;BR /&gt;// skip…&lt;/P&gt;&lt;P&gt;dropboxObj.completionBlock(metaData, error);&lt;BR /&gt;}];&lt;BR /&gt;[finishTask progress:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {&lt;BR /&gt;dropboxObj.curTotalBytes += bytesWritten;&lt;BR /&gt;CGFloat progress = (CGFloat)dropboxObj.curTotalBytes / (CGFloat)dropboxObj.fileSize;&lt;BR /&gt;NSLog(@"finish: bytesWritten = %lld progress = %.4f", bytesWritten, progress);&lt;BR /&gt;dropboxObj.progressBlock(progress);&lt;BR /&gt;}];&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// If there is anything unclear, just tell me, I can provide further infomation.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 23 Jan 2017 03:10:32 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203390#M9709</guid>
      <dc:creator>C. Logan</dc:creator>
      <dc:date>2017-01-23T03:10:32Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203485#M9718</link>
      <description>Thanks! Your definition DB_CHUNK_SIZE of seems like it should be fine, but I don't see exactly where it's actually being used. Can you share the definitions of TGDropboxObject, readDataOfLength, getOffsetFromObj, closeFileFromObj, and anything else necessary so I can try to run this? Thanks in advance!</description>
      <pubDate>Mon, 23 Jan 2017 19:14:37 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203485#M9718</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2017-01-23T19:14:37Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203540#M9730</link>
      <description>&lt;P&gt;You cannot run the code without our external device. But the following code does the same thing and produces the the same result.&lt;/P&gt;&lt;P&gt;You need to provide the source file to be uploaded. The destination file is hard coded (&lt;SPAN&gt;/temp/test.mp4&lt;/SPAN&gt;), you can modify it to another file path. The unused parameters in the API&amp;nbsp;&lt;SPAN class="s2"&gt;uploadInternal:files:index:&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;fromDir:toDropboxDir:opType:resArray:&lt;/SPAN&gt; can be ignored.&lt;/P&gt;&lt;P&gt;If there is anything unclear, feel free to point out.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;const&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; NSUInteger DB_BLOCK_SIZE = &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;5&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;*&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;1024&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;*&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;1024&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;; &lt;/SPAN&gt;&lt;SPAN class="s4"&gt;// 102400000;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;@interface&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; DestVC ()&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;@property&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; DBUploadTask&amp;lt;DBFILESUploadSessionStartResult *, DBNilObject *&amp;gt; * uploadTask;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;@property&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; DBUploadTask&amp;lt;DBNilObject *, DBFILESUploadSessionLookupError *&amp;gt; * continueTask;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;@property&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; DBUploadTask&amp;lt;DBFILESFileMetadata *, DBFILESUploadSessionFinishError *&amp;gt; *finishTask;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p3"&gt;&lt;SPAN class="s2"&gt;@property&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;long&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;long&lt;/SPAN&gt;&lt;SPAN class="s5"&gt; offset;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;@property&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; NSFileHandle *file;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;@property&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; NSData *data;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;@property&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; NSNumber *fileSize;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;@property&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; DropboxClient *client;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;@property&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; NSString *sessionId;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p3"&gt;&lt;SPAN class="s2"&gt;@end&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p3"&gt;&lt;SPAN class="s2"&gt;@implementation&lt;/SPAN&gt;&lt;SPAN class="s5"&gt; DestVC&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;- (&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;void&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;)uploadInternal:(NSArray *)items files:(NSArray *)files index:(&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;int&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;)index fromDir:(NSString *)fromDir toDropboxDir:(NSString *)toDir opType:(OperationType)opType resArray:(NSMutableArray *)resArray {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;NSString *file = [files objectAtIndex:index];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;NSString *srcPath = [fromDir stringByAppendingPathComponent:file];&lt;/SPAN&gt;&lt;SPAN class="s4"&gt;// define your own source file to be uploaded&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p5"&gt;&lt;SPAN class="s2"&gt;//&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;NSString *dstPath = [toDir stringByAppendingPathComponent:file];// define your own destination file in Dropbox&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;_client = [DropboxClientsManager authorizedClient];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;if&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; (!_client) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;[DropboxClientsManager authorizeFromController:[UIApplication sharedApplication]&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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; &lt;/SPAN&gt;controller:&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;self&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;openURL:^(NSURL *url) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;[[UIApplication sharedApplication] openURL:url];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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; &lt;/SPAN&gt;browserAuth:&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;YES&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;} &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;else&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;_fileSize = [FCFileManager sizeOfFileAtPath:srcPath];// get file size&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;_file = [NSFileHandle fileHandleForReadingAtPath:srcPath];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;_data = [_file readDataOfLength:DB_BLOCK_SIZE];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;_uploadTask = [_client.filesRoutes uploadSessionStartData:_data];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;[_uploadTask response:^(DBFILESUploadSessionStartResult * &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;_Nullable&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; result, DBNilObject * &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;_Nullable&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; obj, DBRequestError * &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;_Nullable&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; error) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;DLog(&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;@"result: %@"&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, result);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;DLog(&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;@"routeError: %@"&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, obj);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;DLog(&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;@"error: %@"&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, error);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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="s1"&gt;if&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; (error == &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;nil&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;_sessionId = result.sessionId;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;DBFILESUploadSessionCursor *cursor = [[DBFILESUploadSessionCursor alloc] initWithSessionId:result.sessionId offset:[NSNumber numberWithUnsignedLongLong:_file.offsetInFile]];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&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="s1"&gt;self&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; uploadNext:cursor];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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="s1"&gt;else&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;[_file closeFile];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;/P&gt;&lt;P class="p1"&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;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;[_uploadTask progress:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;NSLog(&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;@"Start: bytesWritten = %lld"&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, bytesWritten);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;/P&gt;&lt;P class="p2"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p3"&gt;&lt;SPAN class="s5"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;return&lt;/SPAN&gt;&lt;SPAN class="s5"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;- (&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;void&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;)uploadNext:(DBFILESUploadSessionCursor *)cursor {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;if&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; ([_fileSize unsignedLongLongValue] - _file.offsetInFile &amp;gt; DB_BLOCK_SIZE) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;_data = [_file readDataOfLength:DB_BLOCK_SIZE];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;} &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;else&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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="s1"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="s1"&gt;long&lt;/SPAN&gt; &lt;SPAN class="s1"&gt;long&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; rest = [_fileSize unsignedLongLongValue] - _file.offsetInFile;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;_data = [_file readDataOfLength:rest];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;if&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; (_data.length &amp;lt; DB_BLOCK_SIZE) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;DBFILESCommitInfo *info = [[DBFILESCommitInfo alloc] initWithPath:&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;@"/temp/test.mp4"&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;];&lt;/SPAN&gt;&lt;SPAN class="s4"&gt;// define your destination file&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;_finishTask = [_client.filesRoutes uploadSessionFinishData:cursor commit:info inputData:_data];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;[_finishTask response:^(DBFILESFileMetadata * &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;_Nullable&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; meta, DBFILESUploadSessionFinishError * &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;_Nullable&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; finishError, DBRequestError * &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;_Nullable&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; error) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;DLog(&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;@"meta: %@"&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, meta);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;DLog(&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;@"finishError: %@"&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, finishError);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;DLog(&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;@"error: %@"&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, error);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;/P&gt;&lt;P class="p2"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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="s1"&gt;return&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;_continueTask = [_client.filesRoutes uploadSessionAppendV2Data:cursor inputData:_data];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;[_continueTask response:^(DBNilObject * &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;_Nullable&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; obj, DBFILESUploadSessionLookupError * &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;_Nullable&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; lookupError, DBRequestError * &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;_Nullable&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; error) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;DLog(&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;@"obj: %@"&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, obj);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;DLog(&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;@"lookupError: %@"&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, lookupError);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;DLog(&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;@"error: %@"&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, error);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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="s1"&gt;if&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; (error == &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;nil&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;DLog(&lt;/SPAN&gt;&lt;SPAN class="s6"&gt;@"_file.offsetInFile: %lld"&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;, _file.offsetInFile);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;DBFILESUploadSessionCursor *cursor = [[DBFILESUploadSessionCursor alloc] initWithSessionId:_sessionId offset:[NSNumber numberWithUnsignedLongLong:_file.offsetInFile]];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&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="s1"&gt;self&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; uploadNext:cursor];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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="s1"&gt;else&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;[_file closeFile];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&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;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;[_continueTask progress:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s5"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;NSLog(&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;@"Continue: bytesWritten = %lld"&lt;/SPAN&gt;&lt;SPAN class="s5"&gt;, bytesWritten);&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s2"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p3"&gt;&lt;SPAN class="s2"&gt;@end&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 24 Jan 2017 03:28:10 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203540#M9730</guid>
      <dc:creator>C. Logan</dc:creator>
      <dc:date>2017-01-24T03:28:10Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203543#M9731</link>
      <description>&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;Remark: File size can also be obtained through following code instead of using FCFileManager:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;NSDictionary&lt;/SPAN&gt;&lt;SPAN class="s2"&gt; *attributes = [[&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;NSFileManager&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;defaultManager&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;] &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;attributesOfItemAtPath&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;:path &lt;/SPAN&gt;&lt;SPAN class="s3"&gt;error&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;:&lt;/SPAN&gt;&lt;SPAN class="s4"&gt;NULL&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;SPAN class="s3"&gt;&lt;SPAN class="Apple-converted-space"&gt;fileSize&lt;/SPAN&gt;&amp;nbsp;= [attributes &lt;/SPAN&gt;&lt;SPAN class="s5"&gt;fileSize&lt;/SPAN&gt;&lt;SPAN class="s3"&gt;];&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 24 Jan 2017 03:54:36 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203543#M9731</guid>
      <dc:creator>C. Logan</dc:creator>
      <dc:date>2017-01-24T03:54:36Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203549#M9733</link>
      <description>&lt;P&gt;Thanks! That's helpful&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A few notes:&lt;/P&gt;
&lt;P&gt;- I misunderstood what was being logged in your original post, and testing the code I can confirm the issue isn't the chunk size being 32768. That's the&amp;nbsp;progress callback is showing incremental progress within each single chunk upload call. Your chunk size is working at&amp;nbsp;5 MB.&lt;/P&gt;
&lt;P&gt;- In your latest code though, note that the comment is wrong. The actual code sets a 5 MB chunk size, but the comment indicates 100 MB.&lt;/P&gt;
&lt;P&gt;- Testing this code, I have a better idea of where the overhead is. We're looking into it and I'll follow up here once I have more information.&lt;/P&gt;</description>
      <pubDate>Tue, 24 Jan 2017 04:38:15 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203549#M9733</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2017-01-24T04:38:15Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203566#M9738</link>
      <description>&lt;P&gt;Thanks for the reply!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The comment is just for testing different value of chunk size. I have tested 5 MB and 100 MB, but the result is the same.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If you have tested the upload using the code I provided, did you get the same result? I mean, is the upload blocked/stopped or canceled after a few seconds?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It would be great if you could help us out from the problem described above.&lt;/P&gt;&lt;P&gt;Hope to hear from you soon when you have more information about how to correctly use the API V2 and get rid of the problem.&lt;/P&gt;</description>
      <pubDate>Tue, 24 Jan 2017 09:11:35 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203566#M9738</guid>
      <dc:creator>C. Logan</dc:creator>
      <dc:date>2017-01-24T09:11:35Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203666#M9748</link>
      <description>I was able to reproduce the slow uploads, due to what appears to be a performance regression on our side. I wasn't able to reproduce exactly the same error you're getting in some cases, but I believe these are both related to the issue we found. We're looking into it.</description>
      <pubDate>Tue, 24 Jan 2017 18:25:23 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203666#M9748</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2017-01-24T18:25:23Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203769#M9765</link>
      <description>&lt;P&gt;Hi Greg,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am also facing the same issue using API V2. File uplaod seems to be very slow. I have tried with 1.5 Gb file with chunk size 4MB. It is going on more than 6 hrs.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Good to hear your team is already looking into it. Looking forward for the solution.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Pooja&lt;/P&gt;</description>
      <pubDate>Wed, 25 Jan 2017 05:04:18 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/203769#M9765</guid>
      <dc:creator>Pooja_S</dc:creator>
      <dc:date>2017-01-25T05:04:18Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/205427#M9913</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any update?&lt;/P&gt;</description>
      <pubDate>Mon, 06 Feb 2017 01:58:49 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/205427#M9913</guid>
      <dc:creator>mikewu1211</dc:creator>
      <dc:date>2017-02-06T01:58:49Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/205514#M9923</link>
      <description>The team has improved this somewhat, but is still working on bringing this back down more.</description>
      <pubDate>Mon, 06 Feb 2017 19:02:38 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/205514#M9923</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2017-02-06T19:02:38Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/208911#M10332</link>
      <description>We are having the same slowness issues on upload. On create folder API it is taking 10 seconds. In our product we transfer whole directory trees. Transferring 100 folders takes 100 * 10 seconds to create the folders. And we get rate limited on 90% of the requests.</description>
      <pubDate>Tue, 28 Feb 2017 09:41:54 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/208911#M10332</guid>
      <dc:creator>Bmcdonald1</dc:creator>
      <dc:date>2017-02-28T09:41:54Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/208999#M10337</link>
      <description>Issues affecting create_folder would be different than the upload_session performance issues on this thread. &lt;BR /&gt;&lt;BR /&gt;I'm not seeing the issue with create_folder you reported myself though. I see you also opened a ticket, so we'll look into it and follow up with you there specifically as it sounds like that may be account-specific.</description>
      <pubDate>Tue, 28 Feb 2017 19:07:26 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/208999#M10337</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2017-02-28T19:07:26Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/211455#M10637</link>
      <description>The team has finished some further work on this, and is reporting the performance should be back to about previous levels. There is certainly still room left for improvement, and the team has an open feature request to improve performance in general, but I don't have a timeline for if/when further improvements would be implemented.</description>
      <pubDate>Mon, 13 Mar 2017 20:47:56 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/211455#M10637</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2017-03-13T20:47:56Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/220269#M11647</link>
      <description>&lt;P&gt;Hi - I'm trying to upload some files and it's taking FOREVER. I've been at this for a week. Right now - I have 3 files left that total 24 Gigs....and it SAYS that it will take 16 hours (or it says 24 hours, or 3 days, or more.)&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;At a 3.7 MBPS rate - I should be able to upload 22 Megs per minute - or 2.2 Gigs per hour, I think - which means this should take me 12 hours...now it says 17 hours....am I wrong in this assumption? Thanks.&lt;/P&gt;</description>
      <pubDate>Tue, 09 May 2017 18:03:25 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/220269#M11647</guid>
      <dc:creator>drowles</dc:creator>
      <dc:date>2017-05-09T18:03:25Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/220274#M11648</link>
      <description>&lt;P&gt;&lt;a href="https://www.dropboxforum.com/t5/user/viewprofilepage/user-id/396119"&gt;@drowles&lt;/a&gt;&amp;nbsp;It sounds like you're referring to using the&amp;nbsp;Dropbox desktop client.&amp;nbsp;This thread was about using a particular programmatic interface, not the&amp;nbsp;Dropbox desktop client. For help with the desktop client, please post in the &lt;A href="https://www.dropboxforum.com/t5/Installation-and-desktop-app/bd-p/101001007" target="_self"&gt;"Desktop app issues" forum&lt;/A&gt;, or &lt;A href="https://www.dropbox.com/support" target="_self"&gt;contact support&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Tue, 09 May 2017 18:14:59 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/220274#M11648</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2017-05-09T18:14:59Z</dc:date>
    </item>
    <item>
      <title>Re: Uploading big file using Objective-C API V2 very SLOW...</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/220286#M11653</link>
      <description>&lt;P&gt;WIll do - thanks much.&lt;/P&gt;</description>
      <pubDate>Tue, 09 May 2017 18:45:58 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Uploading-big-file-using-Objective-C-API-V2-very-SLOW/m-p/220286#M11653</guid>
      <dc:creator>drowles</dc:creator>
      <dc:date>2017-05-09T18:45:58Z</dc:date>
    </item>
  </channel>
</rss>

